簡體   English   中英

在雲中使用 firebase-admin 將 Base64 編碼的 PDF 字符串保存到 firebase 存儲 function

[英]Saving a Base64-encoded PDF string to firebase storage using firebase-admin in a cloud function

我有一個以 base-64 字符串編碼的 PDF 文件的內容,我想使用 Firebase Admin SDK 在 TypeScript 雲 function 中將其保存到 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}`);
}

但是我一直收到錯誤消息,指出文件 object 不存在。 我知道它不存在,因為我正在嘗試創建它:

保存 PDF 時出錯:錯誤:沒有這樣的 object:myproject.appspot.com/invoices/642d5000-851f-449d-8c4a-ec49aafabf80.pdf

請注意,我已經仔細檢查了我的項目是否啟用了 Firebase 存儲,我什至已經嘗試創建一個“invoices”文件夾。

文件必須存在才能設置其元數據。 嘗試更新setMetadata()save()的順序,如下所示:

// save file before setting metadata
await file.save(pdfBuffer);

await file.setMetadata({
  contentType: "application/pdf",
});

const signedUrls = await file.getSignedUrl({
  action: "read",
  expires: "12-31-2500",
});

或者,您可以使用save()方法本身設置元數據:

await file.save(pdfBuffer, {
  metadata: {
    contentType: "application/pdf"
  },
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM