2019년 8월 1일 목요일

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.");
    }
});

댓글 없음:

댓글 쓰기

JavaScript, Array.some(), Array.every()

 Array.every(callbackfn: (value: T, index: number, array: T[]) => unknow, thisArg?: any): boolean      const   array  = [ 'A' ,  ...