首页 > 解决方案 > 如何使用 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)可能是问题所在。任何帮助表示赞赏!

标签: firebasegoogle-cloud-storagefirebase-storagefirebase-admin

解决方案


好的,现在通过将文件路径添加到输入流并使用.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());

推荐阅读