PHP,上传带有file_put_contents图像制作 0 字节文件


PHP, uploading image with file_put_contents make 0 byte file

上传带有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是打开的。

上传文件夹权限也可以。

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

我只是把那个URL放到浏览器中:

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

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

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

$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_它工作正常。是的!谢谢大家!