酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSアプリでFirebase.Storageに画像をアップロードする

Firebase.Authと一緒に使用します。

//一律jpegにしてもいいかもしれないね
let image = getImage()
let data = UIImageJPEGRepresentation(image, 90)!
let imageKey = "images/main_image.jpg"

let storageRef = FIRStorage.storage().reference(forURL: "gs://appname-xxxx.appspot.com")
let imageRef = storageRef.child(imageKey)
imageRef.put(data, metadata: nil) { (metaData, error) in
    if let e = error {
        return
    }

    let url = metaData?.downloadURL()?.absoluteURL
    print(url)
}

アップロードに成功すると、メタデータからは以下のようなURLを取得することができます。しかし、tokenがついてるのでそのまま表に出すことができません。

https://firebasestorage.googleapis.com/v0/b/appname-xxxx.appspot.com/o/images%2Fmain_image.jpg?alt=media&token=xxx

もしFirebase.Databaseと連携して画像パスを保存する必要があれば、ファイルのkeyだけをデータベースに保存しておいて、必要に応じてFirebase.Storageから画像をダウンロードすればよいでしょう。

また、設定を変更して認証済みユーザー以外でも見られるように設定しておけばtokenが不要になります。