2016-10-04 321 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容易得多 –