【问题标题】:How to convert Image to multipart file in spring如何在春季将图像转换为多部分文件
【发布时间】:2016-07-08 23:30:07
【问题描述】:

我有一个图像文件并使用该图像创建 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,而不是像440272 这样得到一些size。如果我得到sizeimage 以便我可以通过将其传递给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);
         ........
         .......

}

谁能帮助我为什么我在转换为multipart file 后得到zero sizeimage file 转换为multipart file 的方法是否正确?或者我需要为此关注任何其他approach

【问题讨论】:

    标签: java spring image


    【解决方案1】:

    我建议使用此代码转换图像

    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

    如果这对你有用,请告诉我

    【讨论】:

    • MockMultipartFile 是的,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多