我正在尝试从我上传的图像中获取downloadURL。 使用此功能,我可以将图像上传到Firebase Storage
uploadImage() {
this.image = 'movie-' + new Date().getTime() + '.jpg';
let storageRef: any,
parseUpload: any;
return new Promise((resolve, reject) => {
storageRef = firebase.storage().ref('imgs/' + this.image);
parseUpload = storageRef.putString(this.cameraImage, 'data_url');
})
问题是我想保存图像URL,以便可以从Firestore上的文档中获取它。 为此,我具有此功能,可在图片上传后获取dowloadURL。
如果我没记错,此方法应返回一个字符串,如果我记错了,请更正我,因为如果记错了,我将无法将其保存在Firestore中
async getImgFromServer(imgName: string) {
let img;
let downloadIMG;
img = firebase.storage().ref("/imgs/" + imgName).getDownloadURL();
let ref= firebase.storage().ref();
const imgRef = ref.child("/imgs/" + imgName);
const downloadURL = await imgRef.getDownloadURL()
return downloadURL
}
唯一的问题是,为此必须上传图像。 我知道如果上传图片,此功能将始终返回url。 问题是,当 uploadImage()完成时,我不知道如何使此功能起作用。 获取网址后,这是我将网址保存在Firestore Cloud数据库中的功能。
updateImgFromServer(image,id){
this.firestore.doc(`public/${id}`).set({
img:image,
});
}
是否有办法确保仅在第一个函数( uploadImage())完成后才执行第二个函数( getImgFromServer())?>
我知道,一旦在我放置的第一个代码段中上传了文件,就有一些方法可以获取downloadURL。如果有人知道如何使它工作,那也可以。
答案 0 :(得分:1)
putString()是异步的,并返回一个UploadTask来跟踪您需要使用的上载进度。它具有then()方法,其工作方式类似于promise,因此可以使用该方法来确定何时完成上传。