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-адрес загрузки больше похож на это:
я изменил некоторые символы в приведенном выше 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-адрес правильно закодирован.