And*_*j H 5 java multipartform-data spring-mvc servlet-3.0
我正在编写Spring MVC控制器,它将接受多部分文件上传(从HTML表单上传文件的标准方法).
Servlet 3.0规范引入了servlet容器处理multipart/form-data的标准方法,引入了MultipartConfigElement用于配置和Part接口,Spring MVC与它们集成,没有任何问题.
问题:我希望获得通过Part.write()方法输出的文件的完整路径,跳过不必要的InputStream读取.由于文件大小的原因,上传到我的控制器的文件最有可能最终由servlet容器输出到磁盘的临时文件,因此Part.write()会将文件移动到目标名称而不是滥用RAM资源.根据规范,该文件是相对于配置的多部分位置编写的.
我想出的解决方案是这样的:
@RestController
@RequestMapping("/upload")
public class UploadController {
@Autowired
private MultipartConfigElement multipartConfigElement;
@RequestMapping(value = "/{uploadId}", method = RequestMethod.POST)
public String handleMultipartFileUpload(
@PathVariable String uploadId,
@RequestParam("file") List<Part> files) throws IOException {
for (Part uploadedPart : files) {
String temporaryFileName = UUID.randomUUID().toString();
uploadedPart.write(temporaryFileName);
// CODE-SMELL FOLLOWS:
Path temporaryFilePath = FileSystems.getDefault().getPath(
multipartConfigElement.getLocation()).resolve(temporaryFileName);
}
return "handleMultipartFileUpload";
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码气味评论就是这样:代码味道.我使用autowired创建了写入文件的路径MultipartConfigElement,Spring恰好将其作为bean.问题是:
MultipartConfigElementbean的应用程序怎么样?| 归档时间: |
|
| 查看次数: |
1284 次 |
| 最近记录: |