2016-06-08 19 views
6

Staram się, aby usługa Firebase Storage działała z usługą graficzną, taką jak Imgix lub Cloudinary. Jednak URL pobierania, który zapewnia Firebase, nie działa z tymi usługami.Magazyn Firebase - adres URL usług graficznych

Na przykład: Cloudinary mówi można pobrać obrazy tak:

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

Jednak moja pobieranie URL wygląda mniej więcej tak:

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

Zmieniłem niektóre znaki w powyższym adresie URL, więc nie będzie pracuję, ponieważ nie chcę gazillionowych żądań ze Stackoverflow. :)

Czy jest coś, co mogę zrobić inaczej? Czy mogę skierować żądania bezpośrednio do wiaderka do przechowywania?

Odpowiedz

7

Możesz bezwzględnie używać usługi takiej jak Imgix lub Cloudinary z Firebase Storage URL - tutaj problem (jak w przypadku 99% takich przypadków) polega na tym, że URL musi być procentowy z unikniętym użyciem, gdy jest używany w pobraniu.

Jeśli mamy URL jak: https://firebasestorage.googleapis.com/v0/b/fir-cloudvisiontest.appspot.com/o/images%2Fimage.jpg?alt=media&token=TOKEN

Będzie trzeba uciec się do czegoś podobnego: https%3A%2F%2Ffirebasestorage.googleapis.com%2Fv0%2Fb%2Ffir-cloudvisiontest.appspot.com%2Fo%2Fimages%252Fimage.jpg%3Falt%3Dmedia%26token%3D61d35caf-b209-485f-8248-a3c2aa717468 (tak, to w rzeczywistości ponownie ucieka uciekł żadnych kodowanie procentowe).

To spowodowałoby Cloudinary URL, który wygląda tak: 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

Biorąc pod uwagę różnice usługowych w tolerancji dla kodowania URL, może się wahać, więc polecam testowania adresów URL za pomocą narzędzia podobnego http://meyerweb.com/eric/tools/dencoder/ aby sprawdzić, czy obrazy pracy .

+1

Witaj. To rzeczywiście działa dla mnie w Cloudinary. :) Dlatego już oznaczone jako odpowiedź. Może mógłbyś mi pomóc z następującymi: Dla Imgix to jeszcze nie działa. Patrzę na https://docs.imgix.com/setup/serving-images. Wybieram "Źródła folderów internetowych". Jeśli wezmę Twój przykładowy adres URL i wybiorę domenę: https://firebasestorage.googleapis.com/v0/b/fir-cloudvisiontest.appspot.com, a następnie dodaj adres URL taki jak: https: // .imgix.net/images % 252Fimage.jpg% 3Falt% 3Dmedia% 26token% 3DTOKEN to powinno działać poprawnie? Może możesz dać swoje myśli, w przeciwnym razie skontaktuję się z obsługą. :) – Timon

+0

Nie jestem pewien - zakładam, że zadziała, choć nie jestem z nim zbyt zaznajomiony. Korzystanie z metody Web Proxy i podpisywanie byłoby najbliższym przybliżeniem rozwiązania Cloudinary. Na dłuższą metę, mam nadzieję, że imgix obsługuje wiaderka GCS oprócz wiader S3, ponieważ problem ten zostałby rozwiązany, gdyby tak się stało :) –

+1

Dzięki za odpowiedź. Skontaktuję się z Imgix i zobaczę, czy mogą coś z tym zrobić. :) – Timon

2

Podczas korzystania z dowolnego z chmurowych zestawów SDK można utworzyć adres URL pobierania przy użyciu metody url(). Poniższy przykład używa 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); 
} 

To zapewni, że adres URL jest prawidłowo zakodowany.