网址未定义。重构为新版本的 angularfire, angular

Posted

技术标签:

【中文标题】网址未定义。重构为新版本的 angularfire, angular【英文标题】:url not defined. Refactor to new versions of angularfire, angular 【发布时间】:2019-01-21 09:23:57 【问题描述】:

我有重构问题,因为我的代码不适用于新版本的 angular 和 angularfire。

错误

行:upload.url = uploadTask.snapshot.downloadURL;未定义。

代码

uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED,
  // three observers
  // 1.) state_changed observer
  (snapshot) => 
    // upload in progress
    upload.progress = (uploadTask.snapshot.bytesTransferred / uploadTask.snapshot.totalBytes) * 100;
    console.log(upload.progress);
  ,
  // 2.) error observer
  (error) => 
    // upload failed
    console.log(error);
  ,
  // 3.) success observer
  (): any => 

    upload.url = uploadTask.snapshot.downloadURL; //?!?!UNDEFINED
    upload.name = upload.file.name;
    this.saveFileData(upload);
  
);

问题

我曾尝试过来自 *** 的不同解决方案,但它并没有真正奏效。大多数示例也更多地是关于如何检索图像,但我想将变量 upload.url 设置为一个值。

另一个问题: 我是角度和网络的新手。将其更改为firestore需要很长时间吗?该代码基于实时firebase。

【问题讨论】:

看看这个答案,尽管它是管理上传和删除多张照片的组件的一部分,但您会很容易地看到如何上传单个图像***.com/questions/51769074/… 【参考方案1】:

要获取downloadURL,必须调用Storage Reference Object的getDownloadURL()方法。

试试这个:

uploadTask.snapshot.ref.getDownloadURL()
    .subscribe(url => console.log(url))

【讨论】:

以上是关于网址未定义。重构为新版本的 angularfire, angular的主要内容,如果未能解决你的问题,请参考以下文章

React Native 图像未在较新版本的 iOS 上呈现

在 iTunes Connect 中上传具有新版本的应用程序时,应用程序图标未更改

如果未安装软件,请安装Chocolatey软件包,但如果已安装较新版本的软件,请跳过安装?

配置弹性beantalk以使用新版本的python

为新版本的应用启用应用内购买?

在 Laravel 中安全地编辑第三方作曲家(供应商)包并防止在发布新版本的包时丢失自定义更改