提问者:小点点

如何调整Firebase存储中所有现有映像的大小?


我正在使用Firebase中的调整图像大小扩展。在我添加此扩展之前,我已经上传了许多图像,它们位于各自的帖子/存储桶中,并通过实时数据库中的URL链接。

有什么方法可以调整他们存储桶中所有现有图像的大小吗?最好不必将他们的URL与他们的帖子一起重新分配?


共1个答案

匿名用户

如果您查看“调整图像大小”扩展的代码,您会看到扩展背后的Cloud Function是由onFinalize事件触发的,这意味着:

当在存储桶中成功创建新对象(或现有对象的新一代)时。这包括复制或重写现有对象。

因此,如果不重写/重新生成现有图像,则不会触发扩展。

但是,您可以轻松编写自己的Cloud Function,它执行相同的操作,但会被触发,例如,通过调用特定的URL(HTTPS Cloud Function)或通过在临时Fi恢复集合中创建新文档(后台触发CF)。

此Cloud Function将执行以下步骤:

  1. 获取存储桶的所有文件,请参阅Google Cloud Storage Node. js ClientAPI的getFiles()方法。此方法返回一个GetFilesResponse对象,该对象是一个File实例数组。
  2. 通过遍历数组,对于每个文件,检查文件在存储桶中是否有相应的调整大小的图像(根据您配置扩展的方式,调整大小的图像可能在特定文件夹中)
  3. 如果文件没有相应的调整大小的图像,请为此文件执行扩展云函数的相同业务逻辑。

根据要处理的图像数量,您可能需要增加Cloud Function的超时值和/或分配的内存,请参阅https://firebase.google.com/docs/functions/manage-functions#set_timeout_and_memory_allocation