如何在Spring中将Image转换为multipart文件

时间:2016-07-08 15:03:42

标签: java spring image

我有一个图像文件并使用该图像创建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吗?

1 个答案:

答案 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

请告诉我这是否适合您