我有一个允许用户上传图像的应用程序,并且我希望其他用户能够看到该图像。
我使用 CloudStorageTools::createUploadUrl 方法允许用户通过 POST 上传。然后,我将上传的文件并使用 move_uploaded_file 将其存储在 Google Cloud Storage 上。
然后,我使用 CloudStorageTools::getPublicUrl 来获取文件的 URL。它返回正确的 URL,但该文件不可公开访问,因此我收到 XML 错误响应“AccessDenied”。
我知道这是因为该文件未公开共享,但我不确定如何在上传后将其公开。
我尝试向 createUploadUrl 传递“acl=public-read”选项,但它返回了未知选项的错误。
我在此页面上看到了如何执行此操作的示例:https://developers.google.com/appengine/docs/php/googlestorage/public_access https://developers.google.com/appengine/docs/php/googlestorage/public_access但是,我的工作流程要求我允许使用 createUploadUrl 方法进行正常的 POST 上传,如下所示:https://developers.google.com/appengine/docs/php/googlestorage/user_upload https://developers.google.com/appengine/docs/php/googlestorage/user_upload
如何使用户上传的文件自动公开访问?
使用带流的 file_put_contents 使其工作。
$file = $_FILES['myfile']
$storeAt = 'gs://bucketname/filename.jpg
Old code
$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']), 0, $ctx);
Go me!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)