기본 콘텐츠로 건너뛰기

Firebase, Firebase storage에 업로드 및 업로드파일 다운로드 링크 가져오기

로컬파일에서 업로드

1
2
// AndroidManifest.xml에 사용권한 추가
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// 내부 사진첩 열기
ImageView imageView = findViewById(R.id.img);
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType(MediaStore.Images.Media.CONTENT_TYPE);
        startActivityForResult(intent, 1000);
    }
});

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    switch (requestCode) {
        case 1000:
            // 선택한 이미지를 ImageView에 표시
            imageView.setImageURI(data.getData());
            // 이미지 내부경로
            imagePath = getPath(data.getData());
            break;
    }
}

private 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);
}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 전역변수 선언
private FirebaseFirestore db;
private FirebaseStorage storage;
private StorageReference storageRef;
private StorageReference recvRef;

// 초기화 및 Storage 버킷설정
private void init() {
    db = FirebaseFirestore.getInstance();
    storage = FirebaseStorage.getInstance("xxx-xxx.appspot.com");
    storageRef = storage.getReference();
}


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Uri file = Uri.fromFile(new File(companyImgPath));
// 업로드 폴더 지정
recvRef = storageRef.child("company/" + file.getLastPathSegment());
recvRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

        // 업로드 완료후 다운로드 경로 가져오기
        recvRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                // 다운로드 경로 표시 (uri.toString())
                Log.d(TAG, uri.toString());
            }
        });
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception e) {
        Log.d(TAG, "Image Upload failure.");
    }
});

댓글

이 블로그의 인기 게시물

Exception, ORA-00918 : 열의 정의가 애매합니다.

Cause:java.sql.SQLSyntaxErrorException:ORA-00918:열의 정의가 애매합니다.

두개 이상의 테이블을 조인하여 사용할때 발생.

조인되는 테이블컬럼에 같은 컬럼의 이름이 존재할경우 alias를 붙여 어떤 테이블의 컬럼인지 알려주어야 한다.


SELECT A.MBR_ID, B.MBR_ID FROM MEMBER A INNER JOIN MEMBER B ON A.MBR_ID = B.MBR_ID