php – 在内存中下载并解压缩zip存档

前端之家收集整理的这篇文章主要介绍了php – 在内存中下载并解压缩zip存档前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想下载一个zip存档,并使用 PHP将其解压缩到内存中.

这就是我今天所拥有的(而且对我来说文件处理太多:)):

// download the data file from the real page
copy("http://www.curriculummagic.com/AdvancedBalloons.kmz","./data/zip.kmz");

// unzip it
$zip = new ZipArchive;
$res = $zip->open('./data/zip.kmz');
if ($res === TRUE) {
    $zip->extractTo('./data');
    $zip->close();
}

// use the unzipped files...
警告:这不能在内存中完成 – ZipArchive无法使用“内存映射文件”.

您可以使用file_get_contentsDocs将zip文件中的文件数据获取到变量(内存)中,因为它支持zip:// Stream wrapper Docs

$zipFile = './data/zip.kmz';     # path of zip-file
$fileInZip = 'test.txt';         # name the file to obtain

# read the file's data:
$path = sprintf('zip://%s#%s',$zipFile,$fileInZip);
$fileData = file_get_contents($path);

您只能使用zip://或ZipArchive访问本地文件.为此,您可以先将内容复制到临时文件并使用它:

$zip = 'http://www.curriculummagic.com/AdvancedBalloons.kmz';
$file = 'doc.kml';

$ext = pathinfo($zip,PATHINFO_EXTENSION);
$temp = tempnam(sys_get_temp_dir(),$ext);
copy($zip,$temp);
$data = file_get_contents("zip://$temp#$file");
unlink($temp);

猜你在找的PHP相关文章