2017-02-18 4 views
1

firebaseとangularjsで新しいです。firebaseのストレージからダウンロードするURLを取得してFirebaseのリアルタイムデータベースに保存するのが難しいです。複数のファイルをアップロードするfirebaseのストレージからURLを取得する

firebaseストレージに複数のファイルをアップロードできました。問題は、firebaseリアルタイムデータベースにダウンロードURLを保存するときです。すべてのデータベースURLの値がsame.itは、それぞれのファイルdownloadURLに基​​づいて異なる必要があります。ここで

は私のスクリプト:あなたが見ることができるように

$scope.submitPhotos = function(file){ 
    console.log(file); 
    var updateAlbum = []; 
    for (var i = 0; i < file.length; i++) {     
    var storageRef=firebase.storage().ref(albumtitle).child(file[i].name); 
    var task=storageRef.put(file[i]); 

    task.on('state_changed', function progress(snapshot){ 
     var percentage=(snapshot.bytesTransferred/snapshot.totalBytes)*100; 
     if (percentage==100){ 
     storageRef.getDownloadURL().then(function(url) { 
     var galleryRef = firebase.database().ref('gallery/'+albumkey); 
     var postkey = firebase.database().ref('gallery/'+albumkey).push().key;  
     updateAlbum={img:url}; 
     firebase.database().ref('gallery/'+ albumkey+'/'+postkey).update(updateAlbum); 
     }); 
    }; 
    }) 
    }; 
}; 

enter image description here

私はデータベースにURLができ店舗だったが、すべてのURLは同じです。私が必要とするのは、記憶装置からのリンクごとに異なるキーストアです。

ご迷惑をおかけして申し訳ありません。

$scope.submitPhotos = function(file){ 
    console.log(file); 
    var updateAlbum = []; 
    for (var i = 0; i < file.length; i++) {     
    var storageRef=firebase.storage().ref(albumtitle).child(file[i].name); 
    var task=storageRef.put(file[i]); 

    task.on('state_changed', function progress(snapshot) 
    { 
     var percentage=(snapshot.bytesTransferred/snapshot.totalBytes)*100; 
     // use the percentage as you wish, to show progress of an upload for example 
    }, // use the function below for error handling 
    function (error) { 

      switch (error.code) { 
      case 'storage/unauthorized': 
       // User doesn't have permission to access the object 
       break; 

      case 'storage/canceled': 
       // User canceled the upload 
       break; 

      case 'storage/unknown': 
       // Unknown error occurred, inspect error.serverResponse 
       break; 
      } 

     }, function complete() //This function executes after a successful upload 
     { 
     let dwnURL = task.snapshot.downloadURL; 
     let galleryRef = firebase.database().ref('gallery/'+albumkey); 
     let postkey = firebase.database().ref('gallery/'+albumkey).push().key;  
     updateAlbum={img:dwnURL}; 
     firebase.database().ref('gallery/'+ albumkey+'/'+postkey).update(updateAlbum); 
     }); 


    }; 
}; 

すべてのベスト:ありがとう

答えて

0

は、以下のコードを使用してみてください!

+0

まだ動作しません。私があなたのコードを入手した結果は、firebaseデータベースはfirebaseストレージにアップロードされた最初のイメージのURLだけを格納します。私はfirebaseデータベースに格納されている私のファイルのすべてのダウンロードURLが必要です –

+0

こんにちは、私は上記のコードにいくつかのコード変更を加えた;数行を削除し、必要に応じて調整します。送信時に 'file'配列に複数のファイルが含まれていることを確認できますか? –

関連する問題