しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

【Swift】FirebaseのStorageを使って画像をアップロード

FirebaseのStorageという機能を使って画像のアップロード/ダウンロードを試してみます。

まずはこちらを参考にFirebaseの初期設定をします。

【iPhone】FirebaseのAnalytics機能を導入してみる - しめ鯖日記

次にCocoaPodsでFirebase/Storageをインストールします。

use_frameworks!
pod "Firebase"
pod "Firebase/Storage"

次にFirebase Storageの設定を修正します。
今はAuthorizeしたユーザーしかファイルの読み書きをできないので、誰でもできるように変更します。

Storageのルールのrequest.auth != nullとなっているところをtrueに変更します。

f:id:llcc:20160605224310p:plain

次は実際にファイルをアップロードします。
サンプル画像をプロジェクトに追加します。

f:id:llcc:20160605221246p:plain

画像を追加したらアップロードをします。
referenceForURLの文字列だけ各自の環境に合わせて下さい。

let storage = FIRStorage.storage()
let storageRef = storage.referenceForURL("gs://<your-firebase-storage-bucket>")
if let data = UIImagePNGRepresentation(UIImage(named: "sample")!) {
    let riversRef = storageRef.child("images/rivers.jpg")
    riversRef.putData(data, metadata: nil, completion: { metaData, error in
        print(metaData)
        print(error)
    })
}

アプリを起動するとアップロードに成功した事が分かるかと思います。

f:id:llcc:20160605224641p:plain

アップロードしたデータは以下のようにすればNSDataとして受け取れます。

let storage = FIRStorage.storage()
let storageRef = storage.referenceForURL("gs://<your-firebase-storage-bucket>")
let riversRef = storageRef.child("images/rivers.jpg")
riversRef.dataWithMaxSize(1 * 1024 * 1024) { data, error in
    print(data)
    print(error)
}

受け取ったNSDataをUIImageにして画面に貼り付けたらアップロードした画像が表示されました。

f:id:llcc:20160605225135p:plain