Programming/Android

[안드로이드] Firebase Android upload Image with text(Firebase 이미지 텍스트 업로드)

devssun 2017. 8. 30. 00:11
728x90
반응형

Firebase Android upload Image with text

  • 이미지와 텍스트 한번에 업로드하기 : 예제(자유게시판)

  • 자유게시판을 할 때는 이미지와 텍스트가 한번에 등록하게 된다

  • 대부분 프로젝트에서는 이미지나 텍스트 하나를 등록하는 게 있는데, 우선 text는 Firebase database에 저장되고 사진은 Firebase Storage에 저장된다

– 간단하게 정리하면

  • 우리는 사진을 먼저 저장한 후에 사진의 url을 받아 database에 text와 함께 저장할 것이다

  1. Firebase setting
  1. Gradle import
  1. image와 text upload
  • storage에는 image file이 upload된다

  • database에는 storage에 올라간 image file의 url이 삽입된다

  • cropedImageUri은 사진을 가져오거나 촬영한 이후 자르기를 하는데 이후 생성된 Uri을 저장하는 변수이다

    • 이 사진을 먼저 storage에 업로드한다
    • putFile()이 성공하였다면 해당 이미지를 가져와(taskSnapshot.getDownloadUrl()) database에 넣을 item에 삽입한다
  cropedImageUri = Uri.fromFile(copyFile);
 
            // 데이터베이스 삽입
            StorageReference storageReference2 = FirebaseStorage.getInstance()
                    .getReference()
                    .child(cropedImageUri.getLastPathSegment());
            storageReference2.putFile(cropedImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    String key = mDatabaseReference.push().getKey();
                    String uploadImageUrl = taskSnapshot.getDownloadUrl().toString();
 
                    item = new FreeBoardItem(profilePhotoUrl, writer, content, 0, 0, currentDate, uploadImageUrl);
 
                    mDatabaseReference.child("freeboard").child(key).setValue(item);
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    e.getMessage();
                }
            });
 
        } else {
            // 이미지없을 때
            // 데이터베이스 삽입
            // text
            item = new FreeBoardItem(profilePhotoUrl, writer, content, 0, 0, currentDate);
            mDatabaseReference.child("freeboard").push().setValue(item);
  1. 그럼 사진과 같은 형태로 들어가게된다
  • freeboard는 앞서 storage와 db에 삽입할 때 child() 속성으로 설정하였다

사진



Reference

http://- https://codelabs.developers.google.com/codelabs/firebase-android/#7

http://- https://androidjson.com/upload-image-to-firebase-storage/

반응형