无法使用 Curl 正确下载 PHP 中的远程图像文件
Unable to correctly download remote image file in PHP with Curl
我正在尝试使用 Curl 下载远程图像,它下载了一个文件,但是当我尝试在我的 mac 上打开该图像时 - 我收到一条 'could not be opened' 消息。
我可以看到文件名和扩展名完好无损,但是不知何故它没有保存得很好,因为文件大小是 177 字节,但我预计文件大小约为 3kb。
谁能告诉我这是为什么?远程站点是否以某种方式阻止我下载文件?我在其他网站上尝试过使用相同的代码和其他一些图片,效果很好吗??
$url = 'http://www.fifaindex.com/static/FIFA16/images/crest/256/light/21.png';
$saveto = '21.png';
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$raw = curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
您尝试从中获取图像的网站可能添加了一些限制,因此如果从域外调用图像将不会被提供。
要解决这个问题,您可以在 CURL 选项中指定引荐来源网址,将其设置为您要从中获取图像的网站的 url。
你的情况
curl_setopt($ch, CURLOPT_REFERER, "http://www.fifaindex.com");
我自己在我的本地服务器上试了一下,成功了。
我正在尝试使用 Curl 下载远程图像,它下载了一个文件,但是当我尝试在我的 mac 上打开该图像时 - 我收到一条 'could not be opened' 消息。
我可以看到文件名和扩展名完好无损,但是不知何故它没有保存得很好,因为文件大小是 177 字节,但我预计文件大小约为 3kb。
谁能告诉我这是为什么?远程站点是否以某种方式阻止我下载文件?我在其他网站上尝试过使用相同的代码和其他一些图片,效果很好吗??
$url = 'http://www.fifaindex.com/static/FIFA16/images/crest/256/light/21.png';
$saveto = '21.png';
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$raw = curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
您尝试从中获取图像的网站可能添加了一些限制,因此如果从域外调用图像将不会被提供。
要解决这个问题,您可以在 CURL 选项中指定引荐来源网址,将其设置为您要从中获取图像的网站的 url。
你的情况
curl_setopt($ch, CURLOPT_REFERER, "http://www.fifaindex.com");
我自己在我的本地服务器上试了一下,成功了。