gpt4 book ai didi

java - 使用 Java 将文件上传到 Cloud Storage for Firebase

转载 作者:行者123 更新时间:2023-11-30 06:30:37 25 4
gpt4 key购买 nike

我想使用 java 服务器将文件添加到我的 Google Cloud Storage(实际上是 Firebase 存储桶)。

我正在使用我在互联网上获得的代码:

    // Authenticate using a service account
Storage storage;
try {
storage = StorageOptions.newBuilder()
.setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("C:/tmp/firebasekey.json")))
.build()
.getService();
// The name for the new bucket
String bucketName = "MinhaSaude";

// Creates the new bucket
Bucket bucket = storage.create(BucketInfo.of(bucketName));
// Create blob
BlobId blobId = BlobId.of("bucket", "blob_name");
// Add metadata to the blob
BlobInfo blobInfo = BlobInfo.newBuilder(blobId).setContentType("text/plain").build();
// Upload blob to GCS (same as Firebase Storage)
Blob blob = storage.create(blobInfo, "Hello, Cloud Storage!".getBytes());

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

我收到的返回的是 Bucket bucket = storage.create(BucketInfo.of(bucketName));

之后的错误

“无效的存储桶名称:'MinhaSaude'”}

或“存储桶“minhasaude-api”的帐户已被禁用。”

我找不到满足谷歌要求的存储桶名称。我已经使用浏览器将文件上传到 Firebase,并且上传正常。

最佳答案

尝试使用我的代码,它对我有用

String filename =  httpRequest.getFirstQueryParameter("name").get();
String contentType = httpRequest.getFirstQueryParameter("content-type").get();

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("key.json").getFile());
FileInputStream serviceAccount = new FileInputStream(file);

FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setStorageBucket("<you bucket name>")
.build();

FirebaseApp firebaseApp = FirebaseApp.initializeApp(options);
Bucket bucket = StorageClient.getInstance(firebaseApp).bucket();


Storage storage = StorageOptions.newBuilder().setProjectId("firebaseId")
.setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream(file)))
.build()
.getService();
file = new File(classLoader.getResource("jar-loading.gif").getFile());

InputStream inputStream = new FileInputStream(file);
BlobInfo blobInfo = BlobInfo.newBuilder(bucket.getName(), filename)
.setContentType(contentType).build();

try (WriteChannel writer = storage.writer(blobInfo)) {
byte[] buffer = new byte[1024];
int limit;
try {
while ((limit = inputStream.read(buffer)) >= 0) {
writer.write(ByteBuffer.wrap(buffer, 0, limit));
}

} catch (Exception ex) {
// handle exception
} finally {
writer.close();
}
}

使用该代码,我可以将 gif 文件从我的项目上传到 firebase 存储。进行更改以使用它

关于java - 使用 Java 将文件上传到 Cloud Storage for Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221966/

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