使用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。
上传文件夹权限也没关系。
答案 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_它工作得很好。是啊!谢谢大家!