2017-03-07 8 views
0

java를 통해 Google Storage API에서 작업하며 나는 0.9.4-alpha (전에 0.9.2-alpha) 버전의 GSAPI를 사용합니다. 나는 방울을 만들 때,이 코드를 사용합니다google 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 클래스와 관련된 모든 클래스를 보았지만 모든 사용자가 공개/개인 파일을 변경할 수 있어야하므로 원하는 내용인지 알 수 없음

답변

0

변경 방법에 대한 해결책을 찾았습니다. 파일에 대한 액세스.

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

이 코드는 모든 사용자를위한 공공 액세스 권한을 부여하고 파일이 그들로부터 개인 꼭 확인하는 방법을 보여줍니다 모든 사용자의 경우는이 보인다.