我正在使用Firebase中的 Resize Images 扩展。在添加此扩展之前,我已经上传了许多图像,它们位于各自的发布/存储桶中,并通过URL链接到实时数据库中。
是否有任何方法,我可以调整所有现有的图片在他们的桶?最好没有重新分配他们的网址与他们的职位?
x6h2sr281#
如果您查看“Resize Images”扩展的code,您将看到扩展基础的Cloud函数由onFinalize事件触发,这意味着:在存储桶中成功创建新对象(或现有对象的新一代)时。这包括复制或重写现有对象。
onFinalize
因此,如果不重写/重新生成现有映像,将不会触发扩展。
但是,您可以轻松地编写自己的Cloud函数,该函数执行相同的操作,但会被触发,例如,通过调用特定URL(HTTPS cloud Function)或在临时Firestore集合(background triggered CF)中创建新文档。此云函数将执行以下步骤:1.获取存储桶中的所有文件,请参阅Google Cloud Storage Node.js客户端API的getFiles()方法。该方法返回一个GetFilesResponse对象,它是File示例的数组。1.通过在数组上循环,对于每个文件,检查文件在桶中是否有相应的调整大小的图像(根据您配置扩展的方式,调整大小的图像可能在特定的文件夹中)1.如果文件没有对应的调整大小后的图像,则对该文件执行与扩展云函数相同的业务逻辑。根据要处理的图像数量,您可能需要增加超时值和/或云函数的分配内存,请参阅https://firebase.google.com/docs/functions/manage-functions#set_timeout_and_memory_allocation
getFiles()
GetFilesResponse
File
1条答案
按热度按时间x6h2sr281#
如果您查看“Resize Images”扩展的code,您将看到扩展基础的Cloud函数由
onFinalize
事件触发,这意味着:在存储桶中成功创建新对象(或现有对象的新一代)时。这包括复制或重写现有对象。
因此,如果不重写/重新生成现有映像,将不会触发扩展。
但是,您可以轻松地编写自己的Cloud函数,该函数执行相同的操作,但会被触发,例如,通过调用特定URL(HTTPS cloud Function)或在临时Firestore集合(background triggered CF)中创建新文档。
此云函数将执行以下步骤:
1.获取存储桶中的所有文件,请参阅Google Cloud Storage Node.js客户端API的
getFiles()
方法。该方法返回一个GetFilesResponse
对象,它是File
示例的数组。1.通过在数组上循环,对于每个文件,检查文件在桶中是否有相应的调整大小的图像(根据您配置扩展的方式,调整大小的图像可能在特定的文件夹中)
1.如果文件没有对应的调整大小后的图像,则对该文件执行与扩展云函数相同的业务逻辑。
根据要处理的图像数量,您可能需要增加超时值和/或云函数的分配内存,请参阅https://firebase.google.com/docs/functions/manage-functions#set_timeout_and_memory_allocation