Я пытаюсь загрузить файл из хранилища 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
Кто-нибудь знает, что это значит?