PHP,上传图片file_put_contents生成0字节文件

smdncfj3  于 2023-05-21  发布在  PHP
关注(0)|答案(3)|浏览(190)

上传一个带有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。
上传文件夹权限也很好。

8wtpewkr

8wtpewkr1#

要从facebook复制图像,script/php程序需要相同的权限。如果程序/ FB API没有通过验证/许可检查,FB不允许下载任何图像。
看起来你的应用程序没有权限从Facebook下载/复制此图像,这就是为什么你得到0字节。尝试让公共访问图像,并保持FB帐户登录,而应对图像

ecr0jaav

ecr0jaav2#

我把这个URL放到浏览器里:

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

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

deyfvvtc

deyfvvtc3#

这是解决办法。我有一个问题与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);

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

相关问题