作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 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/
我是一名优秀的程序员,十分优秀!