简体   繁体   English

AngularFire 存储 - 类型错误:无法读取未定义的属性 'then'

[英]AngularFire Storage - TypeError: Cannot read property 'then' of undefined

I want to upload file in my Firebase Storage and I want to get the percent uploaded and at the end, the download URL.我想在我的 Firebase 存储中上传文件,我想获得上传的百分比,最后下载 URL。

I've try everything that I can but I have:我已经尽我所能,但我有:

TypeError: Cannot read property 'then' of undefined TypeError:无法读取未定义的属性“then”

This is my function:这是我的 function:

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

This is my code in my service:这是我在服务中的代码:

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
      });
}

Thank you all !谢谢你们 !

Try returning a promise:尝试返回 promise:

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;
}

For more information, see有关详细信息,请参阅

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

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