2016-10-04 119 views
1

我從屏幕上傳zip文件夾,然後使用MultipartFile將它發送到控制器。我試圖提取上傳的文件夾並將提取的文件夾保存在某些特定位置。我試過,但我沒有得到....任何人都可以建議我嗎? 這裏是我的代碼如何在java中使用spring解壓縮上傳的zip文件

public String test(
       @RequestParam("datafile") MultipartFile file 
    { 

    String source =file.getOriginalFilename(); 

    //source variable will containthe value as "zip_Folder.zip"; 
      String destination = "D:\\destination"; 

      try { 
       ZipFile zipFile = new ZipFile(source); 
       zipFile.extractAll(destination); 

      } catch (ZipException e) { 
       e.printStackTrace(); 
      } 
    } 
+0

究竟是什麼錯誤?注入或'extractAll'工作不正常? –

回答

3

要求zip4jApache Commons-IO個依賴關係:

@PostMapping("/upload") 
public String add(@RequestParam("file") MultipartFile file) throws IOException { 

    /** 
    * save file to temp 
    */ 
    File zip = File.createTempFile(UUID.randomUUID().toString(), "temp"); 
    FileOutputStream o = new FileOutputStream(zip); 
    IOUtils.copy(file.getInputStream(), o); 
    o.close(); 

    /** 
    * unizp file from temp by zip4j 
    */ 
    String destination = "D:\\destination"; 
    try { 
     ZipFile zipFile = new ZipFile(zip); 
     zipFile.extractAll(destination); 
    } catch (ZipException e) { 
     e.printStackTrace(); 
    } finally { 
     /** 
     * delete temp file 
     */ 
     zip.delete(); 
    } 

    return "redirect:/"; 
} 

至於除此之外,最好是把像「d:\目的地」常量性文件,並通過@Value

@Value("${destination.dir}") 
private String destination; 
+0

超級...非常感謝你 – Naga

+0

不錯的答案.. + 1 ... zip4j比java util zip容易得多 –