Ошибка XMLHttpRequest | Blob | Угловой 5 | Firebase Storage - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь вернуть BLOB-объект для загрузки хранилища Firebase в приложении Ionic 3. В эмуляторе iOS (еще не тестировали на iPhone) он работает, но после сборки для Android и запуска на телефоне возвращает «Ошибка загрузки». Есть идеи, почему это происходит?

  loadXHR(url) {
    return new Promise(function (resolve, reject) {
      try {
        var xhr = new XMLHttpRequest()
        xhr.open("GET", url)
        xhr.responseType = "blob"
        xhr.onerror = function () { reject("Network error.") }
        xhr.onload = function () {
          if (xhr.status === 200) { resolve(xhr.response) }
          else { reject("Loading error:" + xhr.statusText) }
        }
        xhr.send()
      }
      catch (err) { reject(err.message) }
    })
  }

URL-адрес файла предназначен для изображения, которое выбирается из галереи телефона с помощью плагина Ionic s Camera, а затем обрезается.

file:///storage/emulated/0/Android/data/io.app.events/cache/1535133947691-cropped.jpg

1 Ответ

0 голосов
/ 25 августа 2018

Для загрузки данных BLOB с URL-адреса API. Вы можете попробовать этот код.

    loadXHR(url) {
        return new Promise(function (resolve, reject) {
          try {

             var oReq = new XMLHttpRequest();
             oReq.open("GET", URL, true);
             // Define how you want the XHR data to come back
             oReq.responseType = "blob";
             oReq.onload = function (oEvent) {
                var blob = oReq.response; // Note: not oReq.responseText
                if (blob) {

                    var url = window.URL.createObjectURL(blob);
                    document.getElementById('bot-img').src = url;
                    // Or read the data with a FileReader
                    var reader = new FileReader();
                    reader.addEventListener("loadend", function() {
                       // reader.result contains the contents of blob as text
                    });
                    reader.readAsText(blob);
                } else console.error('we didnt get an XHR response!');
            };
            oReq.send(null);

         } catch (err) { reject(err.message) }
    })
  }
...