2017-03-07 13 views
0

私はGoogle Storage APIでjava経由で作業しますが、0.9.4-alpha(前は0.9.2-alpha)バージョンのGSAPIを使用しています。 私はブロブを作成すると、私はこのコードを使用しますgoogle blobのアクセスを変更するにはどうすればよいですか

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

をし、それが正常に動作しますが、私はPredefinedAclを変更する機会を持っています。私は例外com.google.cloud.storage.StorageException: Cannot provide both a predefinedAcl and access controls.を持っているとのメッセージが表示されます

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

:私はこれを実行しようとした場合でも、

{ 
     "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クラスとそれに関連するすべてを見ましたが、すべてのユーザーに対して公開/非公開のファイルを変更できる必要があるため、私が望むことはわかりません

答えて

0

変更方法ファイルへのアクセス。

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

このコードは、すべてのユーザーのパブリックアクセスを提供し、ファイルがそれらからプライベートで作成する方法を示しています。 は、すべてのユーザーにとっては、このようです。

関連する問題