막무가내 삽질 블로그
안드로이드 파이어베이스 스토리지에 사진 저장 본문
728x90
앨범에서 사진을 골라오면 해당 사진 파일경로를 따와서 파이어베이스 스토리지에 저장하는 것을 정리 한다.
우선 앨범에서 선택한 이미지(get.data)를 String 변수에 할당했다.
String path = getPath(data.getData()); 로 받았다
System.out.println(get.data()); 를 했을때 코드는 content://com.google.android.apps~~~~~~~~로 나오는데
아래 코드는 Content의 Uri 을 FilePath로 바꾸는 코드이다
// uri 절대경로 가져오기
public String getPath(Uri uri){
String [] proj = {MediaStore.Images.Media.DATA};
CursorLoader cursorLoader = new CursorLoader(this,uri,proj,null,null,null);
Cursor cursor = cursorLoader.loadInBackground();
int index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(index);
}
System.out.println(getPath(data.getData())); 를 해보면 절대경로로 나오는걸 볼수 있을 것이다.
이제 이 파일을 스토리지에 올려보자
StorageReference storageRef = mStorage.getReference();
Uri file = Uri.fromFile(new File(Uripath)); // 절대경로uri를 file에 할당
Log.d(TAG, "photo file : " + file);
// stroage images에 절대경로파일 저장
StorageReference riversRef = storageRef.child("images/" + file.getLastPathSegment());
UploadTask uploadTask = riversRef.putFile(file);
Log.d(TAG, "uploadTask : " + uploadTask);
// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
PostModel postModel = new PostModel();
postModel.myid = contentsUid;
postModel.contents = c;
postModel.location = l;
postModel.person = f;
postModel.photo = Uripath;
// 게시글 내용 저장
mDatabase.getReference().child("contents").child("content").push()
.setValue(postModel).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//
}
});
}
});
이미지의 절대경로 파일은 Uripath이다.(다른액티비티에서 putextra로 보냈다)
이미지는 절대경로로 스토리지에 저장 하였고, 저장이 성공하면 게시글들의 내용을 db에 저장한 코드이다.
'Android' 카테고리의 다른 글
FragmentPagerAdapter 와 FragmentStatePagerAdapter 의 차이 (0) | 2019.09.13 |
---|---|
안드로이드 파이어베이스를 사용하여 저장된 데이터 수정,삭제 (2) | 2019.06.03 |
안드로이드 파이어베이스 게시글데이터 저장, 불러오기 (1) | 2019.06.02 |
안드로이드 파이어베이스로 사용자 프로필 저장 (3) | 2019.06.02 |
안드로이드 SharedPreferences (0) | 2019.05.27 |
Comments