我有一个以base-64字符串编码的PDF文件的内容,我想使用TypeScript云函数中的Firebase Admin SDK将其保存到Firebase存储。
const base64Pdf = ...;
const file = admin.storage().bucket().file("invoices/642d5000-851f-449d-8c4a-ec49aafabf80.pdf");
const pdfBuffer = Buffer.from(base64Pdf, "base64");
try {
await file.setMetadata({
contentType: "application/pdf",
});
await file.save(pdfBuffer);
const signedUrls = await file.getSignedUrl({
action: "read",
expires: "12-31-2500",
});
...
} catch (e) {
functions.logger.error(`[checkDocuments] Error saving PDF: ${e}`);
}
但是我一直收到一个错误消息,说文件对象不存在。我知道它不存在,因为我试图创建它:
保存PDF时出错:错误:没有此对象:myproject.appspot.com/invoices/642d5000-851f-449d-8c4a-ec49aafabf80.pdf
请注意,我已经仔细检查了项目是否启用了Firebase存储,甚至还尝试创建了一个“invoices”文件夹。
1条答案
按热度按时间7hiiyaii1#
文件 * 必须 * 存在,才能设置其元数据。请尝试按如下所示更新
setMetadata()
和save()
的顺序:或者,您可以使用
save()
方法本身设置元数据: