Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用google存储api使文件公开共享?_Java_Permissions_Google Cloud Storage - Fatal编程技术网

Java 如何使用google存储api使文件公开共享?

Java 如何使用google存储api使文件公开共享?,java,permissions,google-cloud-storage,Java,Permissions,Google Cloud Storage,我有一个在GCE上托管的java projet 我正在使用googleapi服务存储 在G-storage上创建文件夹并在那里上载一些文件 如何使用google存储api使文件公开共享 我没有看到关于这方面的java文档 以下是我的尝试: Storage gsClient; StorageFileId gcsFileId = fileIdCreator.createFromUri(gcsFileURI); List<ObjectAccessControl> a

我有一个在GCE上托管的java projet

我正在使用
googleapi服务存储

在G-storage上创建文件夹并在那里上载一些文件

如何使用google存储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();
存储客户端;
StorageFileId gcsFileId=fileIdCreator.createFromUri(gcsFileURI);
List acl=new ArrayList();
//add(新的ObjectAccessControl().setRole(“”);
//add(acl.of(acl.User.ofAllUsers(),acl.Role.READER))的acl.of;
add(新建ObjectAccessControl().setRole(“阅读器”).setProjectTeam(新建ObjectAccessControl.ProjectTeam().SetTam(“查看器”));
StorageObject对象=新的StorageObject().setName(gcsFileId.getObjectId()).setAcl(acl);
InputStreamContent mediaContent=新的InputStreamContent(“应用程序/八位字节流”,inputStream);
Storage.Objects.Insert insertRequest=gsClient.Objects().Insert(gcsFileId.getBucket(),object,mediaContent);
insertRequest.getMediaHttpUploader().setDirectUploadEnabled(true);
insertRequest.execute();
我看到了这个

而这个“projectTeam”是只读属性。相反,您需要构造一个“实体”,如下所示:

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

谢谢,我如何将此acl设置为已经在云中的文件?