我正在编写一个服务器,它从客户端接收一个zip文件,然后解压缩该文件。 当我收到zip文件时,我将其存储在内存中。
我发现并尝试使用某个库来上传zip文件,例如zlib和minizip,但是所有这些文件都解压缩了磁盘上的文件,而不是内存。
我不想将文件临时保存到磁盘中并提取它,效率不高。
如何从内存中解压缩文件? 我在Windows上编写C和C ++。
答案 0 :(得分:2)
看看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));
答案 1 :(得分:1)
zlib支持内存中的inflate()和deflate()函数。您可以阅读here
的内容答案 2 :(得分:0)
libzip(基于zlib)具有从内存中打开存档的功能。示例代码为on github。
src = zip_source_buffer_create(data, size, 1, &error)
za = zip_open_from_source(src, 0, &error)