我开发了一个页面,任何匿名用户都可以将文件上传到我的 GCS Bucket。存储桶权限为“ All Users: WRITER
”,这是创建上传 URL 的 AppEngine 代码
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
UploadOptions uploadOptions = UploadOptions.Builder.withGoogleStorageBucketName(FULL_BUCKET_NAME);
return blobstoreService.createUploadUrl(FULL_CALLBACK_URL, uploadOptions);
根据文档:
如果未经身份验证的(匿名)用户上传了对象,如果存储桶授予 AllUsers 组 WRITE 或 FULL_CONTROL 权限,则可以将默认存储桶 ACL 应用于对象,如上所述。
对于这个项目,我修改了默认对象 ACL ,使用此工具添加了具有 READER 权限的用户电子邮件。
这是问题所在:如果我使用 GCS 浏览器上传文件,则会应用默认对象 ACL。
当使用 AppEngine 中的 createUploadURL 上传文件时,应用到对象的 acl 是系统默认值(私有),而不是我的自定义默认值。
我究竟做错了什么?