我有一个图像文件并使用该图像创建File
对象
File file = new File("E://Shared Data/Images/xyz.jpg");
以上一行是创建一个file
对象,其大小类似于440272
,我需要将上述image file
转换为multipart file
,因为我做了
DiskFileItem fileItem = new DiskFileItem("file", "image/png", false, file.getName(),
(int) file.length(), file.getParentFile());
fileItem.getOutputStream();
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
adminAssetUploadController.upload(request, multipartFile, "product", null);
问题是在转换后我得到的是size=0
,而不是像size
那样得到一些440272
。如果size
获得image
,那么我可以将其存储到某个位置,方法是将其传递给upload
方法。
以下是上传方法
public ResponseEntity<Map<String, Object>> upload(HttpServletRequest request,
@RequestParam("file") MultipartFile file, @PathVariable(value = "sectionKey") String sectionKey,
@PathVariable(value = "id") String id) throws IOException {
Map<String, Object> responseMap = new HashMap<String, Object>();
Map<String, String> properties = new HashMap<String, String>();
properties.put("entityType", sectionKey);
properties.put("entityId", id);
StaticAsset staticAsset = staticAssetService.createStaticAssetFromFile(file, properties);
staticAssetStorageService.createStaticAssetStorageFromFile(file, staticAsset);
........
.......
}
任何人都可以帮助我,为什么在转换为zero size
后我获得multipart file
我的方法是否正确将image file
转换为multipart file
?或者我需要关注任何其他approach
吗?
答案 0 :(得分:2)
我建议使用此代码转换图片
FileInputStream input = new FileInputStream(fileItem);
MultipartFile multipartFile = new MockMultipartFile("fileItem",
fileItem.getName(), "image/png", IOUtils.toByteArray(input));
如果你想使用CommonsMultipartFile,我想你应该把你的pom文件放到commons-fileupload
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
CommonsMultipartFile的文档声明
注意:从Spring 2.0开始,此类需要Commons FileUpload 1.1或 更高。该实现不使用任何已弃用的FileUpload 1.0 API,以便与未来的Commons FileUpload版本兼容。 http://docs.spring.io/spring-framework/docs/2.0.8/api/org/springframework/web/multipart/commons/CommonsMultipartFile.html
请告诉我这是否适合您