【发布时间】:2017-12-29 03:29:32
【问题描述】:
所以我按照Google's official sample 创建了一个 Cloud Storage 触发的 Firebase 函数,该函数将从上传的图像创建调整大小的缩略图并将它们也上传到存储中。这里是简化的:
exports.generateThumbnail = functions.storage.object().onChange(event => {
// get the uploaded file data (bucket, name, type...)
// return if the file is not an image or name begins with "thumb_"
// download the uploaded image in a temporary local file,
// resize it using ImageMagick
// upload it to storage with the name "thumb_<filename>"
}
但是,当新的缩略图上传时,函数会再次触发,以此类推。他们通过返回上传的文件是否有“thumb_”前缀来避免这种情况。
然后你会得到两张图像(原始图像和缩略图),我想用缩略图重写现有图像,所以我只有一张带有原始路径的图像。
我不知道该怎么做,因为我不知道如何在不更改名称的情况下避开重新上传循环。我可以在上传缩略图后删除原始图像,但指向原始图像的链接已经返回并保存在实时数据库中(这些图像是用户的个人资料图片)。
【问题讨论】:
-
您只想存储缩略图?
-
@BrunoFerreira 是的,我只想要缩略图,但我希望它有原始图像在存储中的路径,基本上是覆盖原始数据
-
可以尝试获取原图路径,将缩略图上传到原图路径,例如如果原图路径是.../images可以创建缩略图上传到 .../images 路径并删除原始图像,如果您想显示更多内容,我可以创建答案。
-
@BrunoFerreira 我不确定我们是否理解,这个函数是在原始图像(比如说/avatars/zantsu.jpg)上传之后触发的,这个函数创建一个调整大小的图像并上传数据到/avatars/thumb_zantsu.jpg,如果我删除前缀并将拇指上传到/avatars/zantsu.jpg,这将成功覆盖图像但随后函数再次触发,我不知道如何退出它所以它不会重新开始重新上传
-
你可以得到 /avatars/zantsu.jpg 创建缩略图 avatars/thumb_zantsu.jpg 上传缩略图所以 /avatars/ 路径有两个图像 thumb 和 original 并且当缩略图上传成功时你删除原来/avatars/zantsu.jpg 和 avatars/thumb_zantsu.jpg 仍然只是缩略图,是我在唱歌吗
标签: javascript firebase firebase-storage google-cloud-functions