簡體   English   中英

如何使用雲function檢查雲存儲中的文件路徑是否有效?

[英]how to check if a file path in cloud storage is valid or not using cloud function?

所以我正在嘗試使用雲 function 像這樣從 firebase 存儲下載圖像

const bucket = storage.bucket("myApp.appspot.com")
const filePath = `eventPoster/${creatorID}/${eventID}.png`

await bucket.file(filePath).download({
    destination: tmpFilePath
})

但問題是,我無法確保圖像始終為 png 格式,它也可以是 jpeg 或 jpg

如果我這樣硬編碼,我會得到這樣的錯誤

錯誤:沒有這樣的 object:myApp.appspot.com/eventPoster/user1/ev123.png

那么如何檢查路徑是否有效或如何制作可以與其他圖像擴展一起動態工作的代碼?

作為社區 Wiki 發布,因為我將其中的一部分基於評論中,因此社區的其他成員可以隨意編輯它。

如評論中所述,您可以使用該方法exists()來檢查您的存儲桶中是否存在特定文件。 這樣,當您嘗試返回文件時文件不存在時,您不會有任何問題。 這將是您僅檢查現有文件的最佳方式,名稱基於ids ,因為您基於名稱結構。

除此之外,正如在此處社區的其他帖子中所闡明的那樣,您可以限制存儲桶中的文件類型,以防您使用POST方法上傳文件,否則,您將無法 - 這也可以是選擇。 如果您沒有使用POST ,正如在其他帖子中所提到的,您可以嘗試構建一個 Cloud Function 在將文件上傳到存儲桶之前檢查文件類型,這將使您的應用程序僅上傳特定文件.

如果您想了解如何使用 Cloud Functions 將文件上傳到 Cloud Storage,可以在此處查看本教程: 如何使用 firebase 雲函數上傳

不幸的是,這些似乎是目前唯一可用的選項,但我認為它們對您來說是一個好的開始。

讓我知道這些信息是否對您有幫助!

您可以對文件使用exists方法來檢查您的 PNG 是否存在。 您還可以更改代碼並使用getFiles()方法。 如您所見,您可以放置選項,其中一個名為“前綴”。 在你的情況下,你可以有這個

bucket.getFiles({
  prefix: "eventPoster/${creatorID}/${eventID}"
}, <callback>);

在這里,您將列出所有帶有前綴的文件:PNG、JPEG 等。 使您的代碼更智能以利用此動態答案

暫無
暫無

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

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