Firebase Storage - получите актуальные данные вместо downloadURL - PullRequest
0 голосов
/ 06 февраля 2020

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

Но я не могу понять, как это сделать. Согласно документации Firebase я могу получить URL для загрузки, но не могу извлечь фактические данные.

Вот функция для извлечения данных из хранилища (В тестовом примере я могу получить URL правильно, но мне нужны фактические данные)

// Create a reference to the file we want to download
var starsRef = storageRef.child('images/stars.jpg');

// Get the download URL
starsRef.getDownloadURL().then(function(url) {
  // Insert url into an <img> tag to "download"
})

Спасибо

Обновление 17.02.2020

Я решаю свою проблему, моя ошибка ! Можно загрузить файл из хранилища, используя запрос ajax, который упоминается в документации. Вот простая функция, которую я определяю, которая возвращает обещание, и после разрешения вы можете получить фактический файл / данные.

async updateToStorage(pathArray, dataToUpload) {

    let address = pathArray.join("/");

    // Create a storage ref
    let storageRef = firebase.storage().ref(address);

    // Upload file as string format, known as firebase task
    let uploadPromise = await storageRef.putString(dataToUpload);

    let url = await uploadPromise.ref.getDownloadURL();

    const res = await fetch(url);

    const content = await res.text();

    return content;
}

const avatar = await updateToStorage(['storage', 'uid', 'avatarUrl'], avatar.png);
//avatar will be the actual image after download.

1 Ответ

1 голос
/ 06 февраля 2020

API Cloud Storage for Firebase для JavaScript, работающие в веб-браузерах, на самом деле не обеспечивают способ загрузки необработанных данных файла. Это отличается от Android и iOS. Обратите внимание, что StorageReference не имеет прямых средств доступа к данным, в отличие от Android и iOS эквивалентов. Я не знаю, почему это так. Считайте, что это запрос функции, который вы можете отправить с поддержкой Firebase .

Возможно, вам потребуется настроить какую-то конечную точку API, которую может вызывать ваш код, и направлять ее через веб-сервер, который обслуживает на вашем веб-сайте или с помощью чего-либо другого, поддерживающего CORS, чтобы вы могли сделать запрос из браузера, который пересекает веб-домены без проблем с безопасностью.

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