2016-09-20 86 views
0

我有一個應用程序,當前允許用戶上傳大量數據到Web服務。問題是這些文件需要一些時間才能通過網絡上傳,所以我想讓用戶先壓縮文件然後上傳。在java中解壓Spring MultipartFile

@RequestMapping(value = "upload", method = RequestMethod.POST) 
@ResponseBody 
public ResponseEntity<?> uploadObjects(HttpServletRequest request, 
             @RequestParam("file") MultipartFile file) { 
    //Do stuff with it 
} 

我目前可以解壓MultipartFile到Java IO文件,但所有現有的邏輯只能成MultipartFile工作,將需要一些(可能很多)返工。

private File unzip(MultipartFile file) throws IOException { 
    byte[] buffer = new byte[1024]; 
    int bufferSize = 1024; 
    File tempFile = null; 
    ZipInputStream zis = new ZipInputStream(file.getInputStream()); 
    ZipEntry entry; 
    while ((entry = zis.getNextEntry()) != null) { 
    tempFile = File.createTempFile(entry.getName(), "tmp"); 
    tempFile.deleteOnExit(); 
    FileOutputStream fos = new FileOutputStream(tempFile); 
    BufferedOutputStream bos = new BufferedOutputStream(fos, bufferSize); 
    int count; 
    while ((count = zis.read(buffer, 0, bufferSize)) != -1) { 
     bos.write(buffer, 0, count); 
    } 
    bos.flush(); 
    bos.close(); 
    } 
    zis.close(); 
    return tempFile; 
} 

有沒有辦法將MultipartFile解壓縮回MultipartFile?或者將文件轉換成MultipartFile?

+0

[轉換文件到MultiPartFile]的可能的複製(http://stackoverflow.com/questions/16648549/converting-file-到multipartfile) – MGorgon

回答

0

嘗試org.springframework.mock.web.MockMultipartFile, 它打算在測試中使用,因此它可以在本地創建。 有一個構造函數

public MockMultipartFile(String name, InputStream contentStream) 

這可能滿足您的需求....