반응형
Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mqtt
- socket-server
- NoSuchMethodError
- 워치
- gradle
- Galaxy Watch
- Android
- git-push
- BottomSheetDialog
- mosquitto
- 오즈뷰어
- Kotlin
- cloud-firestore
- git
- firebase-storage
- OZViewer
- ozd
- firebase-database
- google-login
- Dva
- AWS
- Flavors
- ActivityResult-API
- Firebase
- Java8
- socket.io
- socket-client
- TIZEN
- hung-up
- JNI
Archives
- Today
- Total
Hyeyeon blog
[Android] 갤러리 사진을 Firebase-Storage에 업로드하기 본문
반응형
1. build.gradle(Project)
buildscript {
repositories {
google()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.5'
}
}
allprojects {
repositories {
google()
}
}
2. build.gradle(Module)
apply plugin: 'com.google.gms.google-services'
dependencies {
implementation platform('com.google.firebase:firebase-bom:26.8.0')
implementation 'com.google.firebase:firebase-storage-ktx'
}
3. Firebase Storage로 업로드하기
val uri = Uri.fromFile(File("/sdcard/image.jpg"))
// 버킷이 여러 개인 경우, 버킷 주소 명시
// val storage = Firebase.storage("gs://xxxxxx.com")
val storageRef = storage.reference
val sdf = SimpleDateFormat("yyyyMMddhhmmss")
val fileName = sdf.format(Date()) + ".jpg"
// 업로드할 위치와 파일 명 (폴더가 없을 경우 자동 생성)
val riversRef = storageRef.child("images/$fileName")
riversRef.putFile(uri)
.addOnProgressListener { taskSnapshot ->
val btf = taskSnapshot.bytesTransferred
val tbc = taskSnapshot.totalByteCount
val progress: Double = 100.0 * btf / tbc
// 진행 상태 표시
progressBar.progress = progress.toInt()
}.addOnFailureListener { Log.i("업로드 실패", "") }
.addOnSuccessListener { Log.i("업로드 성공", "") }
4. 앨범의 사진을 Firebase Stroage에 업로드하기
class MainActivity : AppCompatActivity() {
private val PICK_IMAGE = 10001
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
// 갤러리 호출
val intent = Intent(Intent.ACTION_GET_CONTENT).apply { type = "image/*" }
startActivityForResult(intent, PICK_IMAGE)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == PICK_IMAGE) {
val uri: Uri? = data?.data
if (uri != null) {
upload(uri)
}
}
}
private fun upload(uri: Uri) {
val storageRef = storage.reference
val sdf = SimpleDateFormat("yyyyMMddhhmmss")
val fileName = sdf.format(Date()) + ".jpg"
val riversRef = storageRef.child("/$fileName")
riversRef.putFile(uri)
.addOnProgressListener { taskSnapshot ->
val btf = taskSnapshot.bytesTransferred
val tbc = taskSnapshot.totalByteCount
val progress: Double = 100.0 * btf / tbc
// 진행 상태 표시
progressBar.progress = progress.toInt()
}
.addOnFailureListener { Log.i("업로드 실패", "") }
.addOnSuccessListener { Log.i("업로드 성공", "") }
}
}
관련 글
728x90
'개발 > Android' 카테고리의 다른 글
[Android] Firebase Database - Cloud Firestore 연동하기 (0) | 2021.06.08 |
---|---|
[Android] Firebase Google Login 연동하기 (0) | 2021.05.12 |
[Android] 파일 다운로드 시, progressBar percent가 마이너스로 나오는 경우 (0) | 2021.03.18 |
[Android] Failed resolution of: Lorg/apache/http/params/BasicHttpParams 해결 (0) | 2021.03.15 |
[Android] No matching client for package name '..' 해결 (0) | 2021.02.08 |
Comments