0

我正在尝试从另一台服务器的资产创建一个 .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”无效。

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

更新

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

4

3 回答 3

3

您正在下载 JPEG 文件 (.jpg) 并将其保存为 .zip 文件。自然,如果您尝试将此 ZIP 文件作为存档打开,它将失败,因为文件的内容是图像,而不是存档。如果您想实际创建一个包含此 jpg 图像的 zip 存档,则需要下载该图像,然后使用ZIP 系列函数对其进行压缩。

于 2012-08-31T20:25:47.063 回答
1

你真的想这样做:

// 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();
于 2012-08-31T20:32:09.743 回答
0

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

于 2012-08-31T20:23:28.897 回答