[Android] raw폴더에 있는 파일 Firebase storage에 업로드,다운로드하기
ImageView imageView;
private StorageReference mStorageRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.iv);
mStorageRef = FirebaseStorage.getInstance().getReference();
}
public void fileUpload(View view) {
//Uri file = Uri.parse(String.format("android.resource://%s/%s/%s",this.getPackageName(),"raw","cat.jpg"));
Uri path = Uri.parse("android.resource://"+getResources().getResourcePackageName(R.raw.cat)+"/"+R.raw.cat);
StorageReference riversRef = mStorageRef.child("images/cat.jpg");
riversRef.putFile(path)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// Get a URL to the uploaded content
Uri downloadUrl = taskSnapshot.getDownloadUrl();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(getBaseContext(),"업로드 실패염",Toast.LENGTH_SHORT).show();
}
});
}
//raw폴더에 있는 파일을 업로드 할 경우 보라색 표시된 걸로 Uri.parse하면된다//여기에서 쓰는 mStorageRef.child("images/cat.jpg");는
//Uri.parse의 파일을 Firebase storage에 images폴더 안의 cat.jpg라는 파일로 저장한다는 의미
public void fileDownload(View view) {
try {
final File localFile = File.createTempFile("images", "jpg");
StorageReference riversRef = mStorageRef.child("images/smiley.jpg");
riversRef.getFile(localFile)
.addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
Bitmap bitmapImage = BitmapFactory.decodeFile(localFile.getPath());
imageView.setImageBitmap(bitmapImage);
Toast.makeText(getApplicationContext(), "다운로드 성공", Toast.LENGTH_LONG).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
Toast.makeText(getBaseContext(),"다운 실패염",Toast.LENGTH_SHORT).show();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
//Firebase storage에 있는 파일을 다운로드 할 때는 보라색의 경로 images/smiley.jpg파일을 다운로드 한다
// - 한마디로 storage의 images 폴더 안의 smiley.jpg 파일을 다운로드 한다는 의미 (경로는 사용자에 따라 작성)
//여기에서 쓰는 File.createTempFile("images", "jpg");는
//다운로드 한 파일을 images로 시작하고 .jpg로 끝나는 파일을 만든다는 의미
//(중간에 01,02,03 이런식으로 임시파일이 늘어날수록 숫자가 변경됨)
'게임 개발 초보자 > 안드로이드 연습장' 카테고리의 다른 글
[Android] Sqlite 데이터베이스 예제 활용 (0) | 2018.06.20 |
---|---|
[Android] Sqlite 데이터베이스 기본 예제 (0) | 2018.06.20 |
[Android] simpleframework로 xml 파일 읽고쓰기 (0) | 2018.06.15 |
[Android] Jsoup으로 xml 파싱하기 (프로젝트 안에 있는 파일) (0) | 2018.06.15 |
[Android] XmlPullParser로 xml 파싱하기 (0) | 2018.06.15 |