dependencies {
implementation platform('com.google.firebase:firebase-bom:31.2.2')
implementation 'com.google.firebase:firebase-storage-ktx'
}
// storage 인스턴스 생성
val storage = Firebase.storage
// storage 참조
val storageRef = storage.getReference("image")
// 파일 경로와 이름으로 참조 변수 생성
val fileName = SimpleDateFormat("yyyyMMddHHmmss").format(Date())
val mountainsRef = storageRef.child("${fileName}.png")
binding.imageView9.setOnClickListener {
// ACTION_PICK을 사용하여 앨범을 호출
var intent= Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI )
registerForActivityResult.launch(intent)
}
private val registerForActivityResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
when (result.resultCode) {
RESULT_OK -> {
// 변수 uri에 전달 받은 이미지 uri를 넣어준다.
uri = result.data?.data!!
// 이미지를 ImageView에 표시한다.
binding.imageView9.setImageURI(uri)
}
}
}
private fun imageUpload(uri:Uri?){
if(uri == null) {
Log.e(TAG, "URI is null. Image upload failed.")
Toast.makeText(this, "이미지를 선택해주세요.", Toast.LENGTH_SHORT).show()
return
}
// storage 인스턴스 생성
val storage = Firebase.storage
// storage 참조
val storageRef = storage.getReference("image")
// 파일 경로와 이름으로 참조 변수 생성
val fileName = SimpleDateFormat("yyyyMMddHHmmss").format(java.util.Date())
val mountainsRef = storageRef.child("${fileName}.png")
val uploadTask = mountainsRef.putFile(uri)
uploadTask.addOnSuccessListener { task ->
Toast.makeText(this, "사진 업로드 성공", Toast.LENGTH_SHORT).show()
}.addOnFailureListener {
// 파일 업로드 실패
Toast.makeText(this, "사진 업로드 실패", Toast.LENGTH_SHORT).show();
}
}
binding.btnComplete.setOnClickListener {
imageUpload(uri)
}
----------다음 할 일 -------