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

Я пытаюсь заставить хранилище Firebase работать с сервисом изображений, таким как 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 запросов от Stackoverflow. :)

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

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-адресу Cloudinary, который выглядит так: 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 cloudinary, вы можете создать 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-адрес правильно закодирован.