【发布时间】:2021-01-31 15:54:53
【问题描述】:
我想在 firebase storege 上上传多张图片。但我无法上传它。 下面是我的代码。
AddNewProjectActivity.java“保存项目方法”
private void saveProject() {
String pro_name, client_name, pro_rec_date, pro_comp_date, total_views, pro_no, arch_no;
pro_no = binding.projectNo.getText().toString();
arch_no = binding.architectNumber.getText().toString();
pro_name = binding.projectName.getText().toString();
client_name = binding.ClientName.getText().toString();
pro_comp_date = binding.projectCompleteDate.getText().toString();
pro_rec_date = binding.projectReceivedDate.getText().toString();
total_views = binding.totalViewsOfPhotos.getText().toString();
progressDialog.setMessage("Writing in Database...");
progressDialog.setCancelable(false);
progressDialog.setIcon(R.mipmap.ic_launcher_round);
progressDialog.setTitle("Aurum Design");
progressDialog.show();
if (!(item.equals("Payment Received or Not?") && item2.equals("Project Status"))) {
reference = FirebaseDatabase.getInstance().getReference("project_details");
StorageReference ImageFolder = FirebaseStorage.getInstance().getReference().child("ProjectImages");
final HashMap<String, Object> hashMap = new HashMap<>();
//upload data
hashMap.put("architect_no", arch_no);
hashMap.put("client_name", client_name);
hashMap.put("payment_received", item);
hashMap.put("project_status", item2);
hashMap.put("project_complete_date", pro_comp_date);
hashMap.put("project_name", pro_name);
hashMap.put("project_no", pro_no);
hashMap.put("project_received_date", pro_rec_date);
hashMap.put("total_views_of_photos", total_views);
//upload Images
for (upload_count = 0; upload_count < uri.size(); upload_count++) {
Uri IndividualImage = uri.get(upload_count);
final StorageReference ImageName = ImageFolder.child("Image" + pro_name + IndividualImage.getLastPathSegment());
ImageName.putFile(IndividualImage).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ImageName.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String URL = String.valueOf(uri);
hashMap.put("image_url"+upload_count,URL);
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(activity, "failed", Toast.LENGTH_SHORT).show();
}
});
}
reference.push().setValue(hashMap);
uri.clear();
progressDialog.dismiss();
startActivity(new Intent(activity, MainActivity.class));
activity.finish();
} else {
progressDialog.dismiss();
Toast.makeText(activity, "select payment received or not?", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(activity, "select Project Status", Toast.LENGTH_SHORT).show();
}
}, 1000);
}
}
在上面的代码中 addOnSuccessListener 不起作用
进入addOnFailureListener
ImageName.putFile(IndividualImage).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ImageName.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String URL = String.valueOf(uri);
hashMap.put("image_url"+upload_count,URL);
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(activity, "failed", Toast.LENGTH_SHORT).show();
}
});
请知道解决方案的人,请告诉我。提前致谢...
【问题讨论】:
-
是否显示来自
onFailure()的Toast消息? -
是的.. toast 显示出来了
-
应用程序没有崩溃...但是会显示失败吐司
标签: java android firebase firebase-realtime-database firebase-storage