我如何从使用Firestorage图像调整大小扩展程序调整大小的图像中获取下载URL?

3
  • 我能够从原始上传的文件中下载URL。
  • 但是,我无法从由图像调整扩展创建的文件中下载URL。
//making a ref beforehand
const ref = db.collection("impressions").doc().id;

//upload the original file
const bucket = await firebase.storage().ref("impressions/" + ref).put(image);

//this works but I do not need it
const downloadUrl = await firebase.storage().ref("impressions/" + ref).getDownloadURL();

//trying to retrieve the downloadUrl from the files that are most likely still in the process of being created by the image resize extention?
//the ref's are correct

const downloadUrl_image = await firebase.storage().ref("impressions/" + ref + "_1000x1000").getDownloadURL();

const downloadUrl_thumb = await firebase.storage().ref("impressions/" + ref + "_50x50").getDownloadURL();

我怎样可以从调整大小后的图像中获取下载链接?有没有事件可以监听?还是我需要自己编写函数?

感谢您的帮助,

Matthias

1个回答

2
Firebase扩展非常棒,因为它们允许您快速部署标准业务逻辑,但在配置选项方面可能会受到限制。
特别是,您将无法直接获取调整大小后的图像的下载URL。
我可以想到两种可能的方法:
1. 在调整大小的图像创建时触发云函数
在扩展配置期间,您定义存储调整大小的图像的路径。
帮助文档如下:
例如,如果您指定路径为“thumbs”,并上传图像至“/images/original.jpg”,则调整大小的图像将存储在“/images/thumbs/original_200x200.jpg”。
因此,您预先知道路径结构和调整大小的图像的名称。因此,当创建这些文件时,您可以触发云函数,参见doc。例如,您可以将图像的下载URL存储在具有与调整大小的图像文件名(或原始文件名)相同的Firestore文档中。
2. 编写自己的图像调整大小云函数
在官方 Cloud Function 示例集合中有一个示例与该扩展完全相同。您可以在 Github 上找到它这里。您还可以查看扩展本身的代码
这样,您就可以完全控制 Cloud Function 的逻辑。

请你帮忙看一下这个问题吗?https://dev59.com/eFIH5IYBdhLWcg3wAnrX#61741009 - newdeveloper
@newdeveloper 你好,很抱歉我无法帮助你,因为我对你的问题中涉及的技术不熟悉。 - Renaud Tarnec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接