我有一个包含一个 XML 文件的 zip 文件的 BASE64 字符串。
关于如何在不处理磁盘上的文件的情况下获取 XML 文件的内容有什么想法吗?
我非常希望将整个过程保存在内存中,因为 XML 只有 1-5k。
如果必须编写 zip、提取 XML,然后加载并删除所有内容,那会很烦人。
最佳答案
我遇到了类似的问题,我最终手动完成了。
https://www.pkware.com/documents/casestudies/APPNOTE.TXT
这会提取单个文件(只是第一个文件),没有错误/crc 检查,假设使用了 deflate。
// zip in a string
$data = file_get_contents('test.zip');
// magic
$head = unpack("Vsig/vver/vflag/vmeth/vmodt/vmodd/Vcrc/Vcsize/Vsize/vnamelen/vexlen", substr($data,0,30));
$filename = substr($data,30,$head['namelen']);
$raw = gzinflate(substr($data,30+$head['namelen']+$head['exlen'],$head['csize']));
// first file uncompressed and ready to use
file_put_contents($filename,$raw);
关于php - 从 ZIP 字符串中提取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140063/