我正在尝试从我上传的图像中获取下载URL。使用此功能,我将图像上传到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((完成时,我不知道如何使这个函数工作。在获得url之后,这是我在Firestore Cloud数据库中保存url的函数。
updateImgFromServer(image,id){
this.firestore.doc(`public/${id}`).set({
img:image,
});
}
有没有办法确保第二个函数(getImgFromServer(((只有在第一个函数(uploadImage((完成后才能执行?
我知道有一些方法可以在我放的第一个片段上传文件后获得下载URL。如果有人知道如何让它发挥作用,那也没关系。
putString((是异步的,它返回一个UploadTask,用于跟踪您需要使用的上传进度。它有一个then((方法,它的工作原理就像promise一样,所以用它来确定上传何时完成。