【问题标题】:AngularFire Storage - TypeError: Cannot read property 'then' of undefinedAngularFire 存储 - 类型错误:无法读取未定义的属性 'then'
【发布时间】:2020-03-03 21:01:54
【问题描述】:

我想在我的 Firebase 存储中上传文件,我想获得上传的百分比,最后是下载 URL。

我已经尽我所能,但我有:

TypeError: 无法读取未定义的属性“then”

这是我的功能:

$scope.createCatalog = function(catalog,uid,setColor,setBg){
    console.log(catalog);
    StorageService.put(catalogs,uid,medias,catalog.logo).then(function(success){
      console.log(success);
    })
}

这是我的服务代码:

put : function(name,userID,item,data){
      var itemRef = firebase.storage().ref().child("users").child(userID).child(name).child(item);
      var itemFile = $firebaseStorage(itemRef);
      var uploadTask = itemFile.$put(data);
      uploadTask.$progress(function(snapshot) {
        var percentUploaded = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
        return percentUploaded
      });
      uploadTask.$complete(function(snapshot) {
        return snapshot.downloadURL
      });
}

谢谢大家!

【问题讨论】:

    标签: javascript angularjs firebase angularfire


    【解决方案1】:

    尝试返回一个承诺:

    put : function(name,userID,item,data){
          var deferred = $q.defer();
          var itemRef = firebase.storage().ref().child("users").child(userID).child(name).child(item);
          var itemFile = $firebaseStorage(itemRef);
          var uploadTask = itemFile.$put(data);
          uploadTask.$progress(function(snapshot) {
            var percentUploaded = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
            deferred.notify(percentUploaded);
          });
          uploadTask.$complete(function(snapshot) {
            deferred.resolve(snapshot.downloadURL);
          });
          return deferred.promise;
    }
    

    有关详细信息,请参阅

    【讨论】:

    • 谢谢,我没有错误了,但它在控制台日志中返回 undefined ...
    猜你喜欢
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多