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);
});
};
})
};
};
私はデータベースに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);
});
};
};
すべてのベスト:ありがとう
まだ動作しません。私があなたのコードを入手した結果は、firebaseデータベースはfirebaseストレージにアップロードされた最初のイメージのURLだけを格納します。私はfirebaseデータベースに格納されている私のファイルのすべてのダウンロードURLが必要です –
こんにちは、私は上記のコードにいくつかのコード変更を加えた;数行を削除し、必要に応じて調整します。送信時に 'file'配列に複数のファイルが含まれていることを確認できますか? –