Firebase功能 - 在上传到存储

时间:2017-07-23 13:10:42

标签: javascript firebase firebase-storage google-cloud-functions

所以我按照Google's official sample创建了一个云存储触发的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_”前缀,他们可以通过返回来避免这种情况。

然后您最终得到两张图片(原件和缩略图),我想用缩略图重写现有图片,所以我只有一张图片带有原始路径。

我不知道如何解决这个问题,因为我不知道如何在没有名称更改的情况下规避重新上载循环。我可以在上传缩略图后删除原始图像,但指向原始图像的链接已经返回并保存在实时数据库中(这些图像是用户的个人资料图片)。

1 个答案:

答案 0 :(得分:5)

在查看from tensorflow.user_ops import roi_pooling npm模块中的bucket.js文档后,我终于设法用缩略图覆盖原始文件/路径,并避免循环,

可以通过在上传缩略图时附加自定义元数据来完成,并在下次执行该功能时测试该元数据。

我将发布我所做的更改,其余部分与链接的示例相同。

以下是测试:

@google-cloud/storage

这是const filePath = event.data.name const metadata = event.data.metadata if (metadata.isThumb) { console.log('Exiting: Already a thumbnail') return } 承诺返回时的部分:

spawn