php – Google app-engine – 在谷歌云存储上上传的文件不公开
我有一个应用程序,允许用户上传图像,我希望其他用户能够看到该图像.
我使用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); 去吧! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |