2012-08-31 46 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