使用Firebase Web SDK,我可以轻松地在上传文件后获取下载链接(downloadUrl)
const task = firebase.ref().child('myFolder').put(file, metadata)
task.then(snapshot => {
snapshot.ref.getDownloadURL())
}
但是我安装了 Resize Images Extention,现在我想在调整大小后立即获取下载链接。该怎么做?我找不到任何关于这方面的解释...使用Firebase Web SDK,我可以轻松地在上传文件后获取下载链接(downloadUrl)
const task = firebase.ref().child('myFolder').put(file, metadata)
task.then(snapshot => {
snapshot.ref.getDownloadURL())
}
但是我安装了 Resize Images Extention,现在我想在调整大小后立即获取下载链接。该怎么做?我找不到任何关于这方面的解释...因此,如果您未指定路径,并指定了200x200,则上传使用与上传原始图像相同的名称命名调整大小的图像,但添加您指定的宽度和高度作为后缀。
image.jpg
到存储桶的根目录,新名称将为:image_200x200.jpg
,位于存储桶的根目录下。resized
,并且指定了200x200,则在存储桶的根目录中上传image2.jpg
,则新名称将为/resized/image2_200x200.jpg
。getDownloadURL
。
如果您想等待,可以使用类似以下代码的轮询方式:
function delay(t, v) {
return new Promise(function(resolve) {
setTimeout(resolve.bind(null, v), t)
});
}
function keepTrying(triesRemaining, storageRef) {
if (triesRemaining < 0) {
return Promise.reject('out of tries');
}
return storageRef.getDownloadURL().then((url) => {
return url;
}).catch((error) => {
switch (error.code) {
case 'storage/object-not-found':
return delay(2000).then(() => {
return keepTrying(triesRemaining - 1, storageRef)
});
default:
console.log(error);
return Promise.reject(error);
}
})
}
这是上传后如何调用它的方法:
const storageRef = firebase.storage().ref().child('image_200x200.jpg');
keepTrying(10, storageRef).then((url) => console.log(url));
gs://
URL 比存储下载 URL 更自然,因为这样更灵活,可以进行其他操作。 - robsiemb