0

URLからサーバーに画像をコピーするコードがcURLにあります。

$curl = curl_init( $url );
$file = fopen( $imageURL , 'wb' );
curl_setopt( $curl , CURLOPT_FILE , $file );
curl_setopt( $curl , CURLOPT_HEADER , true );
curl_setopt( $curl , CURLOPT_FOLLOWLOCATION , true );
curl_exec( $curl );
curl_close( $curl );
fclose( $file );

正しく動作しませんがfile_put_contents()動作します。私の cURL コードに何か問題がありますか?

4

2 に答える 2

5

複数の解決策がありますが、cURL はおそらく最適ではありません。

$remote_img = 'http://www.somwhere.com/images/image.jpg';
$img = imagecreatefromjpeg($remote_img);
$path = 'images/';
imagejpeg($img, $path);

うまく機能しますが、cURL に設定されている場合は、これを試してください。

$ch = curl_init ($img);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata=curl_exec($ch);
curl_close ($ch);
if(file_exists($fullpath)){
    unlink($fullpath);
}
$fp = fopen($fullpath,'x');
fwrite($fp, $rawdata);
fclose($fp); 

それもうまくいくはずです。

頑張ってください!

于 2013-01-12T06:53:03.817 に答える
1

CURLOPT_HEADERtrue に設定しないでください。これにより、出力にヘッダーが含まれます。したがって、画像ファイルには応答ヘッダー+画像データが含まれます。その行を削除するか、設定してfalseください。

于 2013-01-12T07:02:21.930 に答える