안녕하세요
앱 개발중에 파이어베이스로 사진 보내는 부분에서 막혔는데
질문할곳을 찾다가 이곳으로 왔습니다
고수님들 도와주세요..ㅠㅠ
다운로드 링크도 잘 따와지고 따로 전송하면 보내는 지는데
(제가 정의한 클래스 객체인)Post 객체에 담아서 파이어베이스에 넣으면 다운로드 링크가 파이어베이스게 들어가지를 않습니다
private void uploadFile(Post post) {
//업로드할 파일이 있으면 수행
if (filePath != null) {
// //업로드 진행 Dialog 보이기
// final ProgressDialog progressDialog = new ProgressDialog(this);
// progressDialog.setTitle("업로드중...");
// progressDialog.show();
//storage
FirebaseStorage storage = FirebaseStorage.getInstance();
//Unique한 파일명을 만들자.
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMHH_mmss");
Date now = new Date();
String filename = formatter.format(now) + ".png";
//storage 주소와 폴더 파일명을 지정해 준다.
StorageReference storageRef = storage.getReferenceFromUrl("gs://application-4bc30.appspot.com").child("Post/" + filename);
storageRef.putFile(filePath).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
@SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();
downUrl[0] = downloadUrl.toString();
post.setUrl(downUrl[0]);
}
});
이 함수에서 다운로드 링크를 따옵니다 다운링크는 전역변수로 설정했습니다
Button writeBtn = (Button) findViewById(R.id.doWrite);
writeBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
String text = mInput.getText().toString();
if(TextUtils.isEmpty(text)){
return;
}
Post post = new Post();
post.setText(text);
post.setWriterId(getMyId());
post.setWriteTime(System.currentTimeMillis());
post.setProvince(province);
post.setCity(city);
post.setClassification(classification);
post.setAnimal(animal);
uploadFile(post);
// post.setUrl(downUrl[0]);
new Firebase(PostActivity.FIREBASE_POST_URL).push().setValue(post);
setResult(RESULT_OK);
finish();
}
});
그 후 버튼을 클릭했을 때 post 객체 생성 후 다른 값들을 세팅하고, uploadFile 메소드로 post 객체의 url 값을 설정해주려고 하는데 자꾸 세팅이 되지 않습니다ㅜ
post 객체를 전역변수로 미리 선언 후 해봐도 되지가 않고.. 막막해서 이렇게 질문을 올립니다
도와주시면 정말 감사드립니다ㅠㅠㅠㅠ