gpt4 book ai didi

java - 如何从独立的 Java 应用程序(而不是从 GAE 网络应用程序)连接到本地谷歌云存储?

转载 作者:行者123 更新时间:2023-11-29 08:51:05 25 4
gpt4 key购买 nike

我有一个 GAE 应用程序,它在 Google Cloud Datastore 中创建一些数据并将一些二进制文件存储到 Google Cloud Storage - 我们称该应用程序为 WebApp。现在我在 Google 计算引擎上运行了一个不同的应用程序。我们将该应用程序称为 ComputeApp

ComputeApp 是一个后端进程,它正在处理由 WebApp 创建的数据。我在这里问in this question之前,我可以使用哪个 API 与 ComputeApp 中的存储进行通信。我使用 Google Cloud Storage JSON API Client Library for Java 实现了存储 通信.

就我与 Google 云中的存储进行通信而言,一切正常。我正在使用服务帐户身份验证。

现在我需要在我的开发 PC 上本地运行我的 ComputeApp,这样我就可以获取本地 WebApp 创建的数据并将其存储到本地调试存储中。我需要它,因为我想要一个测试环境,这样我就可以在本地调试应用程序。我在本地运行的 WebApp 将二进制数据存储到本地数据存储区。我可以通过本地管理控制台看到它:(localhost:8080/_ah/admin)。有实体列表 GsFileInfo 和 __ah_FakeCloudStorage... 实体列表,代表我的存储数据。

我应该如何修改我的 ComputeApp 代码以强制它连接到我的本地调试存储并访问这些存储在本地而不是连接到 Google 云的二进制数据?

最佳答案

在 Google 项目控制台中创建帐户和服务帐户凭据

初始化:

private static final String APPLICATION_NAME = "your-webapp";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

GoogleCredential credential = GoogleCredential.getApplicationDefault();
if (credential.createScopedRequired()) {
credential = credential.createScoped(StorageScopes.all());
}
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
storageService = new Storage.Builder(httpTransport, JSON_FACTORY, credential)
.setApplicationName(APPLICATION_NAME).build();



InputStreamContent mediaContent = new InputStreamContent(contentType, inputStream);


StorageObject objectMetadata = null;
objectMetadata = new StorageObject()
.setName(name)
.setMetadata(ImmutableMap.of("date", new Date().toString()))
.setAcl(ImmutableList.of(
new ObjectAccessControl().setEntity("allUsers").setRole("READER")

))
.setContentDisposition("attachment");


Storage.Objects.Insert insertObject = storageService.objects().insert("staging.your-app.appspot.com", objectMetadata,
mediaContent);


// For small files, you may wish to call setDirectUploadEnabled(true), to
// reduce the number of HTTP requests made to the server.
if (mediaContent.getLength() > 0 && mediaContent.getLength() <= 2 * 1000 * 1000 /* 2MB */) {
insertObject.getMediaHttpUploader().setDirectUploadEnabled(true);
}

insertObject.execute();

关于java - 如何从独立的 Java 应用程序(而不是从 GAE 网络应用程序)连接到本地谷歌云存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22671910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com