Как проверить, существует ли файл в хранилище Firebase при попытке загрузить несколько файлов - JavaScript - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть Arrylist имен папок и файлов, которые мне нужно загрузить из хранилища Firebase.

Это вызывает исключения, потому что некоторые из этих папок и файлов не существуют в хранилище Firebase.Разве невозможно обнаружить таким образом папки и файлы без исключения?

JS CODE:

var parNum = 'S3DD4';
var sessionNum = '3333';
var storageInfoarr = ["Testing/Testing1.3gp", "Testing/Testing1.xlsx"];
 for (i = 0 ; i< storageInfoarr.length; i++){
    var starsRef = storageRef.child(parNum+'/'+sessionNum+'/'+storageInfoarr[i])
    var urlString = starsRef.getDownloadURL().catch(function(error) {
    switch (error.code) {
      case 'storage/object_not_found': // <<< here you decide what to do when the file doesn't exist
        // File doesn't exist
        break;

      case 'storage/unauthorized':
        // User doesn't have permission to access the object
        break;

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

    }
  });

1 Ответ

0 голосов
/ 25 февраля 2019

getDownloadUrl () всегда выдает исключение, когда путь неверен, что вы можете сделать, это обработать эти исключения и загружать только те файлы, которые присутствуют.Вы можете создать консолидированное обещание, которое сообщит, являются ли некоторые пути правильными и неправильными, и обработать их соответствующим образом.

var parNum = 'S3DD4';
var sessionNum = '3333';
var storageInfoarr = ["Testing/Testing1.3gp", "Testing/Testing1.xlsx"];

Promise.all(storageInfoarr.map((sStorage) => {
    var starsRef = storageRef.child(parNum+'/'+sessionNum+'/'+sStorage);
    starsRef.getDownloadURL().then(url => {
        // url is download url, use it download the file
    }).catch(err => {
       // Here you can handle the error for individual download
    });
}) ).then((aResponses) => {
   // This will be called if all promises are resolved. aResponses contain all download url
}).catch((err) => {
   // This will be called if any of the download path is incorrect, with the error of first promise which fails
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...