2016-10-04 9 views
1

私は画面からzipフォルダをアップロードしています.MultipartFileを使用してcontollerに送信しています。アップロードされたフォルダを抽出し、私は試みたが、私は得ていない....誰も私を提案することはできますか? がここに私のコードですアップロードされたzipファイルをJavaでspringを使用して解凍する方法

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よりずっと簡単です –

0

使用してみてください

java.util.zip.ZipEntry; java.util.zip.ZipInputStream;

を例

https://www.mkyong.com/java/how-to-decompress-files-from-a-zip-file/

私のために働いた

+0

返信いただきありがとうございます。このリンクでは、INPUT_ZIP_FILE = "C:\\ MyFile.zip"のような完全なパスを言及しています...しかし、私の場合はMyFile.zipしか持っていません...だから例外 – Naga

関連する問題