什么是改变谷歌blob

时间:2017-03-07 12:04:54

标签: java google-cloud-storage

我通过java使用Google Storage API,并使用0.9.4-alpha(之前是0.9.2-alpha)版本的GSAPI。 当我创建一个blob时,我使用这段代码:

 bucket.create(
            getFileName(req),
            fileToInputStream(req),
            Bucket.BlobWriteOption.predefinedAcl(getPredefinedAcl(req.getAccessType()))
    );

并且它正常工作,我有机会更改PredefinedAcl。但是,如果我尝试执行此操作:

blob.update(Storage.BlobTargetOption.predefinedAcl(Storage.PredefinedAcl.PRIVATE));

我将遇到异常com.google.cloud.storage.StorageException: Cannot provide both a predefinedAcl and access controls.并收到消息:

 {
         "code" : 409,
         "errors" : [ {
         "domain" : "global",
         "message" : "Cannot provide both a predefinedAcl and access controls.",
         "reason" : "conflict"
         } ],
         "message" : "Cannot provide both a predefinedAcl and access controls."
 }

我没有找到关于这个问题的任何内容。 我想知道,更新访问权限的真正方法是什么?我看到了Acl课程并且都与之相关,但我不确定这是否是我想要的,因为我需要能够为所有用户更改公共/私人特定文件

1 个答案:

答案 0 :(得分:0)

我找到了有关如何更改文件访问权限的解决方案。 对于所有用户来说,这似乎是:

Acl acl = Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER);
blob.createAcl(acl);  // public for all
blob.deleteAcl(acl.getEntity());  // private for all

此代码显示如何为所有用户提供公共访问权限,然后使文件成为私有文件。