如何使用google storage api公开共享文件?

时间:2017-03-06 13:48:44

标签: java permissions google-cloud-storage

我在GCE上托管了一个java projet。

我正在使用google-api-services-storage

在G-storage上创建一个文件夹并在那里上传一些文件。

如何使用google storage api公开分享文件?

我没有看到java文档。

这是我的尝试:

    Storage gsClient;
    StorageFileId gcsFileId = fileIdCreator.createFromUri(gcsFileURI);
    List<ObjectAccessControl> acl = new ArrayList<>();
    //acl.add(new ObjectAccessControl().setRole(""));
    //acl.add(Acl.of(Acl.User.ofAllUsers(), Acl.Role.READER));
    acl.add(new ObjectAccessControl().setRole("READER").setProjectTeam(new ObjectAccessControl.ProjectTeam().setTeam("viewers")));
    StorageObject object = new StorageObject().setName(gcsFileId.getObjectId()).setAcl(acl);
    InputStreamContent mediaContent = new InputStreamContent("application/octet-stream", inputStream);
    Storage.Objects.Insert insertRequest = gsClient.objects().insert(gcsFileId.getBucket(), object, mediaContent);

    insertRequest.getMediaHttpUploader().setDirectUploadEnabled(true);

    insertRequest.execute();

我看到了php documentation

json documantation

1 个答案:

答案 0 :(得分:0)

“projectTeam”是一个只读属性。你需要构建一个“实体”,如下所示:

    acl.add(new ObjectAccessControl().setRole("READER").setEntity("allUsers"));