[英]Dynamically created zip files by ZipStream in PHP won't open in OSX
[英]CURL created .zip won't open
我正在嘗試從另一台服務器的資產中創建一個.zip文件,如下所示:
$url = 'http://thindery.com/jsfiddle/butterfly.jpg';
$path = 'butterfly.zip';
$fp = fopen($path, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_FILE, $fp);
$data = curl_exec($ch);
curl_close($ch);
fclose($fp);
運行腳本后,我在服務器上看到.zip。 當我下載.zip並嘗試在Windows計算機上打開它時,出現此錯誤:
Windows無法打開該文件夾壓縮(壓縮)的文件夾'butterfly.zip'無效。
有人知道為什么它無法打開嗎?
UPDATE
我在這里了解我的錯誤。 我可以看到我的原始代碼是如何僅將.jpg保存為.zip,而不是將.jpg放在已存檔(壓縮)的文件夾中。
您正在下載JPEG文件(.jpg),並將其另存為.zip文件。 自然地,如果您嘗試將此ZIP文件作為存檔打開,則它將失敗,因為該文件的內容是圖像而不是存檔。 如果要實際創建一個包含此jpg圖像的zip存檔,則需要下載該圖像,然后使用ZIP系列功能對其進行壓縮。
您真的想這樣做:
// if you have fopen wrappers forget about curl. way to complex for something simple
$jpg = file_get_contents('http://thindery.com/jsfiddle/butterfly.jpg');
$jpgName ='butterfly.jpg';
//use the built in zip functionality in php
$zip = new ZipArchive();
if ($zip->open("c:\temp\$jpgName.zip" , ZIPARCHIVE::CREATE)!==TRUE) {
exit("cannot open c:\temp\$jpgName.zip\n");
}
$zip->addFromString($jpgName, $jpg);
$zip->close();
如果我的理解正確,則您正在嘗試將.jpeg文件打開為.zip。 嘗試使用圖像查看器打開此zip文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.