从Firebase存储中获取图像

时间:2016-08-10 22:15:28

标签: json swift firebase firebase-storage

我正在尝试从Firebase存储中获取图像。我必须得到与JSON具有键值"Product":"some name"完全相同的图像。

例如,url

中的图像名称必须与此类似
let productImageref = productsValue[indexPath.row]["Product"] as? String

我如何才能获得正确的url?我不明白。我阅读了所有文档,据我所知,我必须使用Firebase的“下载URL”。为了获得图像,我使用“ KingFish ”第三方库来异步进行。

我试过这样但是没有给我这个图像:

let productImageref = productsValue[indexPath.row]["nicotine"] as? String

cell!.imageView!.kf_setImageWithURL(NSURL(string: "https://firebasestorage.googleapis.com/v0/b/snuspedia.appspot.com/o/Catch%20Dry%20Eucalyptus%20White%20Mini.png?alt=media&token=68cf4b76-e35b-4868-80f3-d29872e00122")!, placeholderImage: nil)

像上面的代码一样,我可以加载图像但是我必须在每个cell上加载不同的图像。

我做错了什么?欢迎任何提示。

2 个答案:

答案 0 :(得分:1)

我做得非常好,但有点不对劲:D

这是一个像魅力一样的代码:

let productImageref = productsValue[indexPath.row]["Products"] as? String



FIRStorage.storage().reference().child("\(productImageref!).png").downloadURLWithCompletion({(url, error)in
        if error != nil{
            print(error)
        }else{
            (cell?.imageView)!.kf_setImageWithURL(url, placeholderImage: nil)
       }
    })

答案 1 :(得分:0)

GS存储网址不是您可以随时访问的真实网址。它只能在身份验证后访问。 因此,GET HTTP调用永远不会获得带有GS URL的图像。 根据我的经验,最好保留上传的图片网址:

    let reference = storage.referenceForURL(Constant.Firebase.FIREBASE_STORAGE).child(imageNameWithDate())

    if (picture != nil)
    {
        let picData = UIImageJPEGRepresentation(picture!, 0.6)
        reference.putData(picData!, metadata: nil) { (metadata, error) in
            if error == nil {
                let link = metadata?.downloadURL()!.absoluteString
                //save this link for the image URL.
            }
    }