如何在C中解压缩已经加载到内存中的zip文件?

我正在编写一个服务器,它从客户端接收一个zip文件,然后解压缩该文件。 当我收到zip文件时,我将其存储在内存中。

我发现并尝试使用某个库来上传zip文件,例如zlib和minizip,但是所有这些文件解压缩存在于磁盘上的文件,而不是内存。

我不想将文件临时保存到磁盘并提取它,它效率不高。

如何从内存中解压缩文件? 我在Windows上编写C和C ++。

看一下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)); 

zlib支持内存中的inflate()和deflate()函数。 你可以从这里阅读

libzip(基于zlib)具有从内存中打开存档的function。 示例代码在github上 。

 src = zip_source_buffer_create(data, size, 1, &error) za = zip_open_from_source(src, 0, &error)