当前位置: 首页 > 知识库问答 >
问题:

Google云存储Java XML API文件上载并将上载的文件标记为公共

谭俊
2023-03-14

我使用Google Cloud存储JavaXML API将文件从客户端上传到Google Cloud Bucket,文件正在成功上传,但我希望上传的文件可以公开访问(希望文件具有公共-读取权限),如何在上传的文件上设置公共读取ACL,从而使其公开访问。这是我用过的密码

httpTransport = GoogleNetHttpTransport.newTrustedTransport();


String p12Content = Files.readFirstLine(new File("key.p12"), Charset.defaultCharset());
            Preconditions.checkArgument(!p12Content.startsWith("Please"), p12Content);
            //[START snippet]
            // Build a service account credential.
Path path = Paths.get(MyFilePath);
    byte[] byteArray = java.nio.file.Files.readAllBytes(path);
HttpContent contentsend = new ByteArrayContent("text/plain", byteArray );

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
                .setJsonFactory(JSON_FACTORY)
                .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
                .setServiceAccountScopes(Collections.singleton(STORAGE_SCOPE))
                .setServiceAccountPrivateKeyFromP12File(new File("key.p12"))

                .build();
            // Set up and execute a Google Cloud Storage request.
String URI = "https://storage.googleapis.com/" + BUCKET_NAME + "/myfile";
HttpRequestFactory requestFactory = httpTransport.createRequestFactory(credential);
GenericUrl url = new GenericUrl(URI);
HttpRequest request = requestFactory.buildPutRequest(url,contentsend);
HttpResponse response = request.execute();

共有1个答案

韦寒
2023-03-14

包括一个"x-goog-acl"标头,其值为"Public-read",如下所示:

request.setHeader("x-goog-acl", "public-read");

更多信息,您可以查看这些留档页面:

https://cloud.google.com/storage/docs/reference-headers#xgoogacl https://cloud.google.com/storage/docs/access-control

 类似资料:
  • 我正在尝试建立一个基于python的基本谷歌应用引擎站点,允许用户将文件上传到谷歌云存储(主要是图像) 我已经阅读了JSON API和GCS客户端库概述(以及blobstore等)的文档,但仍然没有很好地了解哪种方法是最好的以及它们之间的关系。如果有人能概述一下,或者给我指出一些我可以查看的资源,那就太好了 此外,任何相关的示例代码都会非常有用。我已经能够在此处运行上载示例,但不确定它们是否对应用

  • 我有一个要求,我需要上传文件到谷歌云存储(他拥有并完全维护它)桶。 这个谷歌云存储桶是由我的客户创建的。 我是谷歌云的新手,有亚马逊S3的经验。我在服务器上运行SSI,以将事务数据加载到平面文件。 我为谷歌云创建了一个示例帐户,并安装了谷歌SDK。我可以通过gsutil手动上传文件。 我的问题是 > 我应该如何建议我的客户共享凭据? 我如何连接到谷歌云存储与提供凭据独立? 如何通过以上两个步骤将文

  • 我的情况是,当我以JSON字符串的形式从其他来源接收数据时,我希望将此字符串上载到Google云存储,而不将此字符串写入本地文件并上载此文件。有没有办法做到这一点。非常感谢。如下代码所示 因此,我预计Google云存储将有一个文件test.json,其中包含来自jsonString的内容

  • 我正在考虑从Blobstore切换到Google云存储,以便在项目中上传图像(因为Google称Blobstore为“被取代”)。 在Blobstore中,多部分表单将直接提交(上传)到Blobstore,然后Blobstore将重写请求并重定向到GAE应用程序,以处理BlobKey。这意味着GAE应用程序的负载非常小。 有没有办法通过谷歌云存储(GCS)实现类似的工作流? 在读取和写入Googl

  • 我在本地开发服务器上运行代码,但使用在项目上配置的GCS默认桶名。 Python 2.7版

  • 如果在GCS上存储了一个。txt文件,该文件包含将用作一部分的单词列表,可以在apache beam管道中动态访问该列表吗?我知道我可以将这个列表定义为管道中的全局变量,但我不确定如何将整个文件读入列表,以及是否有任何beam技巧来实现这一点。有什么建议吗?这是我当前的实现,这是不工作的… 我得到以下错误“TypeError:类型'_invalidunpickledpCollection'的参数不