1 回答

TA贡献1864条经验 获得超6个赞
扩展名根据您的配置方式确定性地确定新文件名。您可以在扩展程序的源代码中查看如何确定名称的确切代码。
当您安装扩展程序时,它会要求提供与原始路径相关的调整大小图像的路径。那是新图像的路径(当然,相对于原始图像)。
除此之外,文档声明它将以配置的宽度和高度为后缀。
使用与原始上传图像相同的名称命名调整大小的图像,但后缀为您指定的宽度和高度。
因此,如果您没有指定路径,而是指定了 200x200,然后上传image.jpg
到存储桶的根目录,则新名称将是:image_200x200.jpg
,位于存储桶的根目录。
如果您指定了 path resized
,并且您指定了 200x200,并且上传image2.jpg
到存储桶的根目录,则新名称将/resized/image2_200x200.jpg
与源图像在同一个存储桶中。
要获取下载 URL,您需要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));
添加回答
举报