我想下载一个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_contents
Docs将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);