加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Google app-engine – 在谷歌云存储上上传的文件不公开

发布时间:2020-12-13 21:51:44 所属栏目:PHP教程 来源:网络整理
导读:我有一个应用程序,允许用户上传图像,我希望其他用户能够看到该图像. 我使用CloudStorageTools :: createUploadUrl方法允许用户通过POST上传.然后,我将获取上传的文件并使用move_uploaded_file将其存储在Google云端存储上. 然后,我使用CloudStorageTools :: g
我有一个应用程序,允许用户上传图像,我希望其他用户能够看到该图像.

我使用CloudStorageTools :: createUploadUrl方法允许用户通过POST上传.然后,我将获取上传的文件并使用move_uploaded_file将其存储在Google云端存储上.

然后,我使用CloudStorageTools :: getPublicUrl来获取文件的URL.它返回正确的URL,但该文件不可公开访问,因此我收到XML错误响应“AccessDenied”.

我知道这是因为该文件未公开共享,但我不确定如何在上传后将其公开.

我尝试将“acl = public-read”选项传递给createUploadUrl,但它返回了未知选项的错误.

我在这个页面上看到了如何使用此示例:https://developers.google.com/appengine/docs/php/googlestorage/public_access然而,我的工作流程要求我使用createUploadUrl方法允许正常的POST上传,如下所示:https://developers.google.com/appengine/docs/php/googlestorage/user_upload

如何让用户上传的文件自动公开访问?

解决方法

使用带有流的file_put_contents可以使用此功能.

$file = $_FILES['myfile']
$storeAt = 'gs://bucketname/filename.jpg

旧代码

$saved = move_uploaded_file($file['tmp_name'],$storeAt);

新代码,设置权限和mime类型

$options = array('gs'=>array('acl'=>'public-read','Content-Type' => $file['type']));
$ctx = stream_context_create($options);
$saved = file_put_contents($storeAt,file_get_contents($file['tmp_name']),$ctx);

去吧!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读