0
0

More than 1 year has passed since last update.

【Android】実質たった3行でCloud Storageに画像をアップロードする方法

Last updated at Posted at 2023-01-02

この記事で紹介する内容

今回は、Androidアプリで画像をアップロードする機能を実装したい方向けに、Firebaseを使えば簡単に画像アップロード機能を実装できることを紹介したいと思います。

具体的にいうと、この記事を読めば、実質たった3行のコードを書くだけで、画像を含めたファイルのアップロード機能を作成することができるようになります。

この記事を読んだ後に、「なんだ、Firebaseってめっちゃ使いやすいじゃいないか」と思っていただいた方にはFirebaseの公式ドキュメントをご一読いただき、その機能の豊富さとシンプルさに是非驚いていただけると幸いです。

依存関係を追加する

Cloud Storageライブラリの依存関係を追加します。

そのために、以下の内容をbuild.gradleのdependenciesに追加してください。

implementation platform('com.google.firebase:firebase-bom:31.1.1')
implementation 'com.google.firebase:firebase-storage-ktx'

Cloud Storageにアップロードする

Cloud Storageにファイルをアップロードする場合は、次のように実質たった3行のコードを書くだけで、Androidアプリでアップロード機能を実装することができます。

val storage = Firebase.storage
val ref = storage.reference.child(filePath)
ref.putFile(fileUri).await()

Hiltを使ったコンストラクタインジェクションを使ってstorageを取得する場合は、次のような実装をクラスを作成してみてください。

class StorageServiceImpl @Inject constructor(
    private val storage: FirebaseStorage
) : StorageService {
    override suspend fun upload(fileUri: Uri, filePath: String): UploadTask.TaskSnapshot {
        val ref = storage.reference.child(filePath)
        return ref.putFile(fileUri).await()
    }
}

StorageReferenceの取得

FirebaseStorageのインスタンスに対してreference.child()を呼び出して、StorageReferenceインスタンスを作成します。

val reference = storage.reference.child(filePath)

この時child()に渡す値は、Cloud Storage上のパスを表します。
例えば、画像ファイルをアップロードする際は次のようになると思います。

val filePath = "images/$fileName"

putFile()に渡すUriを取得する方法

そして、StorageReferenceインスタンスに対して、putFile()を呼び出します。このputFile()に対してUri型の値を渡せば良いので、rememberLauncherForActivityResult()の呼び出しによって取得した値を渡すと簡単に画像をアップロードできます。

rememberLauncherForActivityResult()の詳細については、こちらの記事をご参照ください。

まとめ

タイトルでは、実質たった3行で・・・と書きましたが、FirebaseStorageのインスタンスの取得を除けば、実質たった2行で画像をアップロードする機能を実装できます。

val ref = storage.reference.child(filePath)
ref.putFile(fileUri).await()

この簡潔さを、既存のAndroidプロジェクトにFirebaseを導入することによって、ぜひ体験していただくことをおすすめします!

参考にした記事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0