cURL不工作但file_put_contents()呢?

时间:2013-01-12 06:42:41

标签: php curl

我在cURL中有一个代码,应该将图像从URL复制到我的服务器:

$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代码有问题吗?

2 个答案:

答案 0 :(得分: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); 

这应该也可以。

祝你好运!

答案 1 :(得分:1)

不要将CURLOPT_HEADER设置为true 。这将在输出中包含标题。因此,您的图像文件将包含响应标头 + 图像数据。删除该行或将其设置为false