PHP远程下载图片损坏
伊谢尔伦
伊谢尔伦 2017-04-10 15:28:53
[PHP讨论组]

代码如上,原图是可以打开的,但下载到本地就损坏了。
试过header加文件类型,PHP编码也是utf-8,都没用。
加ob_flush()活ob_clean()都没用。
换成fopen函数也是损坏。

在此求助各位大神,非常感谢!!
补充:用这个也是损坏的http://segmentfault.com/q/1010000000156959

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
天蓬老师

原因很简单,图片被gzip了。
用file_get_contents("compress.zlib://".$url);

高洛峰

应该是对方的服务器做了 判断 用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 就可以了

巴扎黑

使用十六进制编辑器打开下载的图片查看文件头

PHP中文网

casperjs表示你们上面回答的问题太复杂了,万一别人加个header判断就又挂了

黄舟

感谢各位的回答,每个代码我都测试了,在本地还是坏的。
应该是因为贴图库某些服务器的问题,或者是我本地虚拟机的问题。
那个网站是默认全部开放外链,应该没有盗链问题,准备换个服务器试试。
总之谢谢三位回答,采纳了第一位的答案,辛苦各位!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号