Как скачать аудио файл с Firebase в виде BLOB-объекта для повторной загрузки позже - JavaScript - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь загрузить файл из хранилища Firebase из папки 1, а затем загрузить его в папку 2 с другими метаданными. У меня проблемы с загрузкой файла. У меня есть веб-приложение, и я использую JavaScript.

Изначально я просто использовал var file = storageRef.child (path);для ссылки на файл, но это не сработало, поэтому теперь я добавил функцию, используя код из документации firebase:

function downloadUrlAsPromise (url) {
  return new Promise(function (resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url);
    xhr.responseType = "blob";
    xhr.onreadystatechange = function(evt) {
      resolve(xhr.response);
    };
    xhr.send();
  });
}

Мой URL имеет вид gs: // MY_BUCKET / folder1/имя файла . Я также скачал gsutil и выполнил команду gsutil cors set cors.json gs: // MY_BUCKET. Когда я пытаюсь запустить код на локальном хосте, я получаю сообщение об ошибке:

Доступ к XMLHttpRequest по адресу 'gs: / MY_BUCKET / folder1 / file_name' из источника 'http://localhost:5000' заблокирован политикой CORS: CrossИсходные запросы поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https. (анонимно) @ ns_signup2.js: 242 downloadUrlAsPromise @ ns_signup2.js: 235 (анонимно) @ VM90: 1

Кроме того, мое имя_файла имеет форму 0.00080906318814211182019-10-28T21: 25: 08.230Z ичасть "ссылка" не продолжается после двоеточия. Может ли это вызвать проблему?

edit: Оказывается, что ошибка была только в Chrome, это не говорит об этом, когда я использую localhost в firefox. При этом, когда я пытаюсь поместить загруженный файл в другое место, то есть запускаю код:

var new_location = audioLocation.child('/folder2/' + fileName);
new_location.put(downloadURLAsPromise(path), new_metadata)

Я получаю ошибку:

[object Object] args.ts: 57: 14

Ee args.ts: 57

положить reference.ts: 146

uploadFileandMeta ns_signup2.js: 267

Eval Code отладчика:1

Кто-нибудь знает, что это значит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...