2012-08-31 49 views
0

我试图从另一台服务器创建出象这样从一个资产的.zip文件:卷曲创建的.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”是无效的。

任何人有一个想法,为什么它不会打开?

UPDATE

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

+5

因为它是JPG? –

+0

只需将一个JPG文件重命名为zip文件并不会使其成为zip文件? – Alfo

回答

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(); 
0

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

3

您正在下载JPEG文件(.jpg)并将其保存为.zip文件。当然,如果你试图打开这个ZIP文件作为一个档案,它会失败,因为该文件的内容是一个图像,而不是档案。如果你想真正创建一个包含这个jpg图像的zip压缩文件,那么你需要下载图像,然后使用ZIP family of functions来压缩它。

+0

我很困惑。我认为它会自动将文件放入档案中。感谢您解决这个问题。 – thindery