エンジニア男

勉強したことの忘備録としてつらつら書いていきます。

【Android】Cloud Storageの使い方。

Cloud Storageの使い方メモ。

 

・公式ドキュメント

https://firebase.google.com/docs/storage/android/start?hl=ja

 

 

・Cloud Storage for Firebase SDK をアプリに追加する

app/build.gradle

dependencies {
implementation 'com.google.firebase:firebase-storage-ktx:19.1.1'
}

 

 

・StorageActivity.kt

class StorageActivity : AppCompatActivity() {

private lateinit var storage: FirebaseStorage
var selectedPhotoUri: Uri? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_storage)

storage = Firebase.storage
setup()
}

private fun setup() {
button_select_photo.setOnClickListener {
val intent = Intent(Intent.Action_PICK)
intent.type = "image/*"
startActivityForResult(intent, 0)
}

button_send_storage.setOnClickListener {
uploadImageToFirebaseStorage()
}

button_fetch_storage.setOnClickListener {
fetchImageToFirebaseStorage()
}
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivity(requestCode, resultCode, data)

if (requestCode == 0 && resultCode == Activity.RESULT_OK && data != null) {
selectedPhotoUri = data.data
val bitmap = MedeiaStore.Images.Media.getBitmap(contentResolver, selectedPhotoUri)
imageView_select_photo.setImageBitmap(bitmap)
button_select_photo.alpha = 0f
}
}

// 写真をFirebase Storageにuploadする
private fun uploadImageToFirebaseStorage() {
val fileName = UUID.randomUUID().toString()
val storageRef = storage.reference.child("/images/$fileName")
storageRef.putFile(selectedPhotoUri!!)
.addOnSuccessListener {
// ファイルのアップロードに成功した時の処理
Log.d("storage", "success upload image: ${it.metadata?.path}")

storageRef.downloadUrl.addOnSuccessListener {
Log.d("storage", "File Location: $it")
}
}
.addOnFailureListener {
// ファイルのアップロードに失敗した時の処理
}
}

// ファイルをFirebase Storageからダウンロードする
private fun fetchImageToFirebaseStorage() {
val storageRef = storage.reference.child("/images/ファイル名")
val localFile = File.createTempFile("images", "jpg")
storageRef.getFile(localFile)
.addOnSuccessListener {
// ダウンロードが成功した時の処理
}
.addOnFailureListener {
// ダウンロードが失敗した時の処理
}
}


}

 

■ファイルをアップロードする

val storageRef = storage.child("...") // ファイルのアップロード先を参照する

storageRef.putFile("........") // 参照先にファイルをアップロードする

storageRef.downloadUrl // ファイルをアップロードした後、ファイルをダウンロードするためのURLを取得する

 

■ファイルをダウンロードする

val storageRef = storage.reference.child("/images/ファイル名") // ダウンロードするファイルを参照する

 

 

~~ 随時更新 ~~