3

サーブレットにアップロードされたファイルを解凍し、解凍されたすべてのファイルを DataStore に byte[] として格納したいと考えています。GAE にはファイル システムがないため、すべてをメモリに配置する必要があります。元の zip ファイル データを格納する byte[] allzipdata があるとします。ファイルを解凍するにはどうすればよいですか? 特にメモリ内にある各 zipentry から入力ストリームを取得する方法は?

ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(allzipdata));
ZipEntry ze = zis.getNextEntry();
while(ze!=null){
}

では、while ループには何が含まれているのでしょうか。

また、ファイルをアップロードする場合、item.getContentType(); を使用して contentType を認識します。項目は FileItemStream です。zipentry の場合、contentType を知る方法はありますか?

4

1 に答える 1

4

から画像データを読み取るには、 ApacheCommons-IOライブラリZipInputStreamを使用することをお勧めします。入力ストリームのZIPエントリをバイト配列に変換します。

    ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(allzipdata));
    ZipEntry ze = null;
    while ((ze = zis.getNextEntry()) != null) {
       // write your code to use zip entry e.g. below:
       String filename = ze.getName();
       System.out.println("File Name of Entry file="+fileName);
       byte[] data = IOUtils.toByteArray(zis);
       // now work with the image `data`
    }
于 2012-11-16T23:08:44.387 に答える