繁体   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