PHP,使用file_put_contents上传图像会生成0字节文件

时间:2012-05-29 10:24:39

标签: php

使用file_put_contents上传图像会生成0字节文件。

这是我使用的代码。我提取facebook图片网址并将其放入网络服务器。

$fb_image_url = 'https://example.com/229282.jpg'

$filename = substr($fb_image_url, strrpos($fb_image_url, '/') + 1);

file_put_contents('upload/user_pic/original/'.$filename, file_get_contents($fb_image_url));

执行此操作后,服务器成功接收文件名,但它是0字节。

我检查了php.ini,并且allow_url_fopen为ON。

上传文件夹权限也没关系。

3 个答案:

答案 0 :(得分:1)

我只是将该网址放入浏览器:

https://fbcdn-profile-a.akamaihd.net/hprofile-ak-snc4/274661_1171545457_6475606_n.jpg

并收到 404 Not Found 作为回应。这可以解释为什么你在本地获得空文件。我强烈建议您先加载数据,验证收到的内容,然后,如果验证通过,则将其保存在本地。

答案 1 :(得分:1)

要从Facebook复制图像,脚本/ php程序需要相同的权限。如果program / FB API没有通过验证/权限检查,FB不允许下载任何图像 看起来您的应用程序没有从Facebook下载/复制此图像的权限,这就是您获得0字节的原因。 尝试授予PUBLIC图像访问权限,并在处理图像时保持FB帐户登录

答案 2 :(得分:0)

这是解决方案。 我的Facebook个人资料地址有问题。

$fb_image_url = 'https://graph.facebook.com/'.$facebook_id.'/picture?type=large';

$filename = $fb_id.'_'.time().'.jpg';

$result = file_get_contents($fb_image_url);

file_put_contents('upload/user_pic/original/'.$filename, $result);

用this_它工作得很好。是啊!谢谢大家!