2017-02-18 19 views
1

Я новичок в firebase и angularjs, и у меня возникают трудности с получением URL-адреса загрузки из хранилища firebase и их хранения в базе данных реального времени firebase.получить URL-адрес загрузки из нескольких файлов для загрузки в хранилище firebase

Я смог загрузить несколько файлов в хранилище firebase. проблема в том, что я сохраняю URL-адрес загрузки в базу данных реального времени firebase, все значения URL-адреса базы данных одинаковы. Они должны отличаться на основе каждого файла 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-адрес в базу данных, но все URLs одинаковы. Мне нужно, чтобы каждый ключ хранил все разные ссылки из хранилища.

Любые помощь оценивается. Благодаря

ответ

0

Попробуйте использовать код ниже:

$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

Это все еще не работает. Результатом, который я получил с вашим кодом, является база данных firebase, которая хранит только URL-адрес первого изображения, загруженного в хранилище firebase. Мне нужны все загружаемые URL-адреса моих файлов, хранящихся в базе данных firebase. –

+0

. Привет, я внес несколько изменений кода в код выше; удалить несколько строк, при необходимости адаптировать их. Можете ли вы подтвердить, что массив «file» содержит несколько файлов для отправки? –

 Смежные вопросы

  • Нет связанных вопросов^_^