2016-08-22 286 views
1

我通过将文件转换为MultipartFile,但MultipartFile是空的,请帮忙确认,非常感谢你, 代码如下:为什么我MultipartFile是空

File file = new File("/Users/aikaliu/document/micrown/source/img/20160802144001791.jpg"); 
    int fileSize =Integer.parseInt(file.length() + ""); 

    DiskFileItem fileItem = null; 
    try { 
     fileItem = new DiskFileItem("file", "text/plain", false, file.getName(),fileSize, file.getParentFile()); 
     fileItem.getOutputStream(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    MultipartFile multipartFile = new CommonsMultipartFile(fileItem); 

回答

2
File file = new File("/Users/aikaliu/document/micrown/source/img/20160802144001791.jpg"); 

    final DiskFileItem diskFileItem = new DiskFileItem("fileData", "text/plain", true, file.getName(), 100000000, file.getParentFile()); 

    InputStream input = null; 
    OutputStream os = null; 
    try { 
     input = new FileInputStream(file); 
     os = diskFileItem.getOutputStream(); 
     IOUtils.copy(input, os); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    MultipartFile multipartFile = new CommonsMultipartFile(diskFileItem); 
+0

我在代码中忘了IOUtils.copy。你是一个拯救生命的人! – jDub9

0

你能切换到MockMultipartFile并尝试下面的代码?

File file = new File("/Users/aikaliu/document/micrown/source/img/20160802144001791.jpg"); 
FileInputStream input = new FileInputStream(file); 
MultipartFile multipartFile = new MockMultipartFile("file", 
file.getName(), "text/plain", IOUtils.toByteArray(input)); 
+0

谢谢,但MockMultipartFile类在弹簧测试包,并无法使用。 –

+0

使用commons-file upload http://commons.apache.org/proper/commons-fileupload/using.html –