【问题标题】:Converting File to MultiPartFile with spring使用spring将文件转换为MultiPartFile
【发布时间】:2013-05-31 22:21:25
【问题描述】:

我想用 spring 将 File 转换为 multipartfile。我做了这个:

File in;
MultipartFile file =  null;
in = new File("C:...file on disk");
int size = (int) in.length();
DiskFileItem fileItem = new DiskFileItem("file", "application/vnd.ms-excel", false, nomefile, size ,in.getAbsoluteFile());
file = new CommonsMultipartFile(fileItem);

但收到此异常:

threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
    at org.apache.commons.fileupload.disk.DiskFileItem.getSize(DiskFileItem.java:316)

我认为 fileItem 为 null 但在调试模式下已填充,还有另一种解决方案吗? 我有这个帖子Converting File to MultiPartFile,但没有工作也没有解决方案。

【问题讨论】:

标签: java spring


【解决方案1】:
    File file = new File("src/test/resources/input.txt");
    FileInputStream input = new FileInputStream(file);
    MultipartFile multipartFile = new MockMultipartFile("file",
            file.getName(), "text/plain", IOUtils.toByteArray(input));

这是从 File 对象获取多部分文件的另一种方法

【讨论】:

  • 我想指出 MockMultipartFile 在 org.springframework.mock.web 中。而且,这很好用。
  • 只在测试环境下有效,否则报错
  • 我看到了 Vipul 遇到的同样问题。尝试在实际业务逻辑中使用时出错。
【解决方案2】:
    File file = new File("src/test/resources/validation.txt");
    DiskFileItem fileItem = new DiskFileItem("file", "text/plain", false, file.getName(), (int) file.length() , file.getParentFile());
    fileItem.getOutputStream();
    MultipartFile multipartFile = new CommonsMultipartFile(fileItem);

你需要的

    fileItem.getOutputStream();

因为否则它会抛出 NPE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2020-04-11
    • 2020-05-07
    • 2018-12-10
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多