我使用下面提到的代码下载图片。
$image_url='http://www.abcd.com/I_298f02_4766792.jpg';
$doc_root= $_SERVER['DOCUMENT_ROOT'];
$image_upload_path = $doc_root . '/';
$image_name2 = 'img-' . time() . '.jpg';
$destination = $image_upload_path . $image_name2;
$data = file_get_contents($image_url);
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
上面提到的代码在开发环境中工作正常,可以从任何网站下载图像。该代码也可以在现场工作,从其他网站下载图像,只有一个网站。
图像似乎已下载,但每当我尝试使用任何图像查看器打开图像时,都会显示一条错误消息,如下所示。
无法加载图片' img-65456465.jpg'。 解释JPEG图像文件时出错(不是JPEG文件:以0x3c 0x21开头)
我也检查了错误日志,但没有发现任何问题。 我不明白为什么它的图像下载功能不适用于该特定网站。
注意: 1)我检查了该网站托管的原始图像类型是否仅为JPEG。
修改 当我尝试使用浏览器查看下载的图像时,我发现了下面提到的错误。
图片' http://www.my-live-site.com/folder/img-65456465.jpg'无法显示,因为它包含错误。
根据建议,我提供原始网站链接。 网站: http://www.funnyjunk.com/ 图片:此网站上的任何图片链接。例如http://static.fjcdn.com/pictures/The+smarterest.+Wow+a+description+I+could+say+anything+I_298f02_4766792.jpg
对此有任何帮助将不胜感激。
答案 0 :(得分:1)
如果将fopen()更改为:
,该怎么办?$file = fopen($destination, "wb+"); // binary writing
让我知道。
修改强>
以下是可行的代码:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 0);
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:23.0) Gecko/20100101 Firefox/23.0\r\n" .
"Referer: http://www.funnyjunk.com\r\n"
)
);
$image_url = 'http://static.fjcdn.com/pictures/The+smarterest.+Wow+a+description+I+could+say+anything+I_298f02_4766792.jpg';
$doc_root= $_SERVER['DOCUMENT_ROOT'];
$image_upload_path = $doc_root . '/';
$image_name2 = 'img-' . time() . '.jpg';
$destination = $image_upload_path . $image_name2;
$data = file_get_contents($image_url, false, stream_context_create($opts));
//$file = fopen($destination, "w+");
//fputs($file, $data);
//fclose($file);
header("Content-type: image/jpeg");
echo $data;
?>
带有推荐人到原始网站的
答案 1 :(得分:0)
您的代码很好我已经测试了一个新的网址正常工作尝试此代码
<?php
$image_url='http://blog.svnlabs.com/wp-content/uploads/2012/06/PHP-DOWNLOAD-FILES-BY-URL.png';
$doc_root= $_SERVER['DOCUMENT_ROOT'];
echo $doc_root;
$image_upload_path = $doc_root . '/';
$image_name2 = 'img-' . time() . '.jpg';
$destination = $image_upload_path . $image_name2;
$data = file_get_contents($image_url);
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
echo $file;
?>
答案 2 :(得分:0)
下载时,您提供的链接不是图像。在浏览器中打开图像URL时,您将被重定向到包含图像的HTML页面。当我在这个图像上运行文件命令时,它会被确认,它告诉我它是一个HTML文本文档。
piNAS:~#: file The+smarterest.+Wow+a+description+I+could+say+anything+I_298f02_4766792.jpg
The+smarterest.+Wow+a+description+I+could+say+anything+I_298f02_4766792.jpg: HTML document text
可能已设置图片无法直接链接,然后将您重定向到HTML页面。
答案 3 :(得分:0)
嘿,只需打开你的网址
并刷新此页面。 您将重定向到另一个页面我认为这是问题图像已受到保护。