繁体   English   中英

Firebase存储| Angular 2-上传后显示图像的正确方法

[英]Firebase Storage | Angular 2 - Proper way to display image after upload

创建事件时,我还将图像上传到Firebase Storage。

然后,我创建一个数组this.eventz在主页上显示事件。 对于每个事件,我也想检索图像,但是出现Firebse错误:

FirebaseStorageError {code_: "storage/object-not-found", message_: "Firebase Storage: Object 'events/-KxCuUuss1I2uFolk99m/-KxCuUuss1I2uFolk99m_main.png' does not exist.", serverResponse_: "{↵ "error": {↵ "code": 404,↵ "message": "Not Found. Could not get object"↵ }↵}", name_: "FirebaseError"}

我知道当我要将图像包含在数组中时还没有上传图像,但是我不知道如何解决问题。 该代码工作正常。 它显示所有事件,为每个事件添加图像……这只是创建新事件时的错误。

getEventImage(event) {

if (event) {
            const mainPhotoRef = firebase.storage().ref('events');
            console.log(mainPhotoRef);
            mainPhotoRef.child(`/${event.key}/${event.key}_main.png`).getDownloadURL()
                .then(url => this.makeEvents(url, event))
        }
    }

makeEvents(url, event) {
    console.log(url);
    if (url) {
        try {
            event.img = url;
            let index = _.findIndex(this.eventz, ['key', event.key]);

            if (index >= 0) {
                this.eventz.splice(index, 1);
            }

            this.eventz.push(event);
        } catch (err) {
            console.log(err);
        }
    }
}

我通过在创建事件对象时将URL保存到事件对象来解决了我的问题。 我想知道我是否正确上传。

private uploadPhoto(itemKey): void {
    this.myPhotosRef.child(itemKey).child(`${itemKey}_main.png`)
      .putString(this.myPhoto, 'base64', { contentType: 'image/png' })
      .then((savedPicture) => this.updateEventImage(savedPicture.downloadURL, itemKey));
  }

  updateEventImage(url, itemKey) {
    console.log(url);
    const newEvent = this.db.object(`events/${itemKey}`)
    newEvent.update({ eventImage: url });
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM