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 でフォルダを開けません 圧縮 (zip 形式) フォルダ 'butterfly.zip' が無効です。

なぜ開かないのか分かる人いますか?

アップデート

ここで私の間違いを理解しています。元のコードが、.jpg をアーカイブ (zip 形式) フォルダーに入れるのではなく、.jpg を .zip として保存していたことがわかります。

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 に答える