Firebase Storage - URL для сервисов изображений

Я пытаюсь заставить Firebase Storage работать с сервисом изображений, таким как Imgix или Cloudinary. Однако URL-адреса для загрузки, предоставляемые Firebase, похоже, не работают с этими сервисами.

Например: Cloudinary говорит, что вы можете получать изображения следующим образом:

http://res.cloudinary.com/demo/image/fetch/ http://upload.wikimedia.org/wikipedia/commons/0/0c/Scarlett_Johansson_C%C3%A9sars_2014.jpg

Тем не менее, мой URL для загрузки выглядит примерно так:

https://firebasestorage.googleapis.com/v0/b/project-503247351211329470.appspot.com/changedsoitdoesnotwork/o/O8Hv4nKOyGgcCyOLoVLH7cQw48y2%2Fimages%2F1.jpeg?alt=media&token=28eabf76-f85b-45aa-das3-fd945729d7c2

Я изменил некоторые символы в приведенном выше URL-адресе, поэтому он не будет работать, так как я не хочу gazillion запросов от Stackru. :)

Есть ли что-то, что я могу сделать по-другому? Могу ли я сделать запросы прямо в хранилище?

2 ответа

Решение

Вы можете абсолютно использовать такие службы, как Imgix или Cloudinary, с URL-адресами хранилища Firebase - проблема здесь (как и в 99% подобных случаев) заключается в том, что при использовании в выборке URL-адрес должен быть экранирован на процент.

Если у нас есть URL, как: https://firebasestorage.googleapis.com/v0/b/fir-cloudvisiontest.appspot.com/o/images%2Fimage.jpg?alt=media&token=TOKEN

Необходимо будет экранировать что-то вроде: https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ffir-cloudvisiontest.appspot.com%2Fo%2Fimages%252Fimage.jpg%3Falt%3Dmedia%26token%3D61d35caf-b209-485f-8248-a3c2aa717468 (да, это фактически повторяет экранированный код с процентами).

Это привело бы к облачному URL, который выглядит следующим образом: http://res.cloudinary.com/<your-project>/image/fetch/https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ffir-cloudvisiontest.appspot.com%2Fo%2Fimages%252Fimage.jpg%3Falt%3Dmedia%26token%3DTOKEN

Учитывая различия в допусках службы для кодирования URL, ваш пробег может отличаться, поэтому я рекомендую тестировать URL с помощью такого инструмента, как http://meyerweb.com/eric/tools/dencoder/ чтобы убедиться, что ваши изображения работают.

При использовании любого из облачных SDK вы можете создать URL-адрес выборки, используя url() метод. В следующем примере используется JavaScript SDK:

var cl = cloudinary.Cloudinary.new( {cloud_name: "<your cloud>"});
var storageRef = firebase.storage().ref();

storageRef.child('images/image.jpg').getDownloadURL().then(function(url) {
  var cloudinary_url = cl.url(url, {type: "fetch"});
  // Do something with the URL...
  console.log(cloudinary_url);
}

Это обеспечит правильную кодировку URL.

Другие вопросы по тегам