CURL创建.zip赢得';t打开


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无法打开文件夹压缩(zipped)文件夹"蝶形.zip"无效。

有人知道为什么不开门吗?

更新

我理解我的错误。我可以看到我的原始代码只是将.jpg保存为.zip,而不是将.jpg放在存档(zipped)文件夹中。

您正在下载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();

如果我理解正确,您正在尝试以.zip格式打开.jpeg文件。请尝试使用图像查看器打开此zip文件。