首页 文章

Firebase存储 - 图像服务的URL

提问于
浏览
6

我正在尝试让Firebase存储与ImgixCloudinary等图像服务一起使用 . 但是,Firebase提供的下载URL似乎不适用于这些服务 .

例如: 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中更改了一些字符,所以它赢得了想要来自Stackoverflow的大量请求 . :)

有什么我能做的不同吗?我可以直接向Storage Bucket提出请求吗?

2 回答

  • 7

    您绝对可以使用像Imgix或Cloudinary这样的服务和Firebase存储URL - 这里的问题(99%的情况都是这样)是在获取时使用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 (是的,它实际上重新逃脱了转义的百分比编码) .

    这将导致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编码容忍度的服务差异,您的里程可能会有所不同,因此我建议使用http://meyerweb.com/eric/tools/dencoder/等工具测试网址,以验证您的图片是否有效 .

  • 2

    使用任何cloudinary 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被正确编码 .

相关问题