0

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

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

$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。

上传文件夹权限也很好。

4

3 回答 3

1

我只是将该 URL 放入浏览器:

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

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

于 2012-05-29T10:31:32.477 回答
1

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

于 2012-05-29T10:41:11.167 回答
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);

有了这个_它工作得很好。是的!谢谢大家!

于 2012-05-29T12:50:37.017 回答