firebase - 如何使用 Admin SDK Java 将 PDF 文件上传到 Firebase 存储?
问题描述
我正在尝试使用 Eclipse Java 中的 Firebase Admin SDK 将 PDF 文件上传到 Firebase 存储。我一直在参考这个文档:https ://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-java 。到目前为止,似乎我能够上传文件,但 pdf 内容似乎以某种方式损坏,因为与原始大小(3028 字节)相比,大小(如 Firebase 存储中所示)更小(11 字节)。所以我尝试下载文件,结果我无法打开下载的文件。我已经实现了以下代码:
BlobId blobId = BlobId.of(bucket, folder+"/"+blobName);
System.out.println("Blob Id:"+blobId);
BlobInfo blobInfo = BlobInfo
.newBuilder(blobId)
.setContentType("application/pdf")
.build();
System.out.println("Blob Info:"+blobInfo);
Blob blob = storage.create(blobInfo, blobName.getBytes(UTF_8));
System.out.println("BLOB:"+blob);
我真的无法从管理员端获得有关上传 PDF 的太多信息。我猜blobName.getBytes(UTF_8)
可能是问题所在。任何帮助表示赞赏!
解决方案
好的,现在通过将文件路径添加到输入流并使用.readAllBytes()
方法读取文件来让它工作。
String file_path = file.getPath();
InputStream file_input_stream = new FileInputStream(file_path);
BlobId blobId = BlobId.of(bucket, folder+"/"+blobName);
System.out.println("Blob Id:"+blobId);
BlobInfo blobInfo = BlobInfo
.newBuilder(blobId)
.setContentType("application/pdf")
.build();
Blob blob = storage.create(blobInfo, file_input_stream.readAllBytes());
推荐阅读
- list - 更改项目符号和文本之间的距离 | 用于 Word 的 API JavaScript
- asp.net-core - Blazor:按时间间隔轮询服务器的对象?
- javascript - 如何断言 sinon mongoose 存根
- javascript - 变量已在上层范围内声明
- python - python - 如何在python中的循环条件错误中继续?
- python - 如何让战斗序列计算敌人的生命值?
- python - 将多个 python 文件制作成可执行文件
- doxygen - 使用 doxygen 编译帮助后打开 CHM 时出错
- odoo - 数据库未连接到 odoo 服务器
- r - 按特定列值过滤日期