我正在尝试从其他服务器创建一个.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)文件夹'butterfly.zip'无效。
任何人都知道为什么它不会打开?
更新
我在这里理解我的错误。我可以看到我的原始代码只是将.jpg保存为.zip,而不是将.jpg放在存档(压缩)文件夹中。
答案 0 :(得分:3)
您正在下载JPEG文件(.jpg)并将其另存为.zip文件。当然,如果您尝试将此ZIP文件作为存档打开,它将失败,因为该文件的内容是图像,而不是存档。如果您想要实际创建包含此jpg图像的zip存档,则需要下载该图像,然后使用ZIP family of functions对其进行压缩。
答案 1 :(得分: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();
答案 2 :(得分:0)
如果我理解正确,你试图打开.jpeg文件为.zip。尝试使用图像查看器打开此zip文件。