PHP远程下载图片损坏
<?php
$pic=file_get_contents('http://i2.tietuku.com/1b776066fa782b78.jpg');
ob_flush();file_put_contents('1.jpg',$pic);
?>
代码如上,原图是可以打开的,但下载到本地就损坏了。
试过header加文件类型,PHP编码也是utf-8,都没用。
加ob_flush()活ob_clean()都没用。
换成fopen函数也是损坏。
在此求助各位大神,非常感谢!!
补充:用这个也是损坏的
http://segmentfault.com/q/1010000000156959
bterm
9 years, 7 months ago
Answers
应该是对方的服务器做了 判断 用file_get_contents() 获得的数据是有误的
测试 使用curl是可以获取的
写一个自定义函数
function curl_get_contents($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
然后用curl_get_contents 代替file_get_contents 就可以了
我有一个大阴谋
answered 9 years, 7 months ago
$ch = curl_init('http://example.com/1b776066fa782b78.jpg');
$fp = fopen('/my/folder/1b776066fa782b78.jpg', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
输出的时候带个头 header("content-type: image/your_image_type");
防爆的氪金坚菊
answered 9 years, 7 months ago