3

クライアントからzipファイルを受け取り、ファイルを解凍するサーバーを作成しています。zip ファイルを受信したら、メモリに保存します。

zlibやminizipなどのzipファイルをアップジップするライブラリを見つけて試してみましたが、それらはすべてメモリからではなくディスク上に存在するファイルを解凍します。

ファイルを一時的にディスクに保存して抽出したくありません。効率的ではありません。

メモリからファイルを解凍する方法は? 私は Windows で C と C++ を書いています。

4

3 に答える 3

3

libarchiveを見てください それはzip形式をサポートしています。

メモリ内のアーカイブを抽出する例:

struct archive *a = archive_read_new();
archive_read_support_compression_gzip(a);
archive_read_support_format_tar(a);
r = archive_read_open_memory(a, buff, sizeof(buff));
于 2012-05-28T09:14:58.550 に答える
2

zlib は、メモリー内の inflate() および deflate() 関数をサポートしています。読み方はこちらから

于 2012-05-28T08:45:55.143 に答える
1

libzip (zlib ベース) には、メモリからアーカイブを開く機能があります。サンプルコードはgithub にあります。

src = zip_source_buffer_create(data, size, 1, &error)
za = zip_open_from_source(src, 0, &error)
于 2018-03-29T02:48:28.643 に答える