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/ファイル名") // ダウンロードするファイルを参照する
~~ 随時更新 ~~