java - 无法在 firebase 上上传多张图片的 addOnSuccessListener。即进入addOnFailureListener
问题描述
我想在 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();
}
});
请任何人知道解决方案,请告诉我。提前致谢...
解决方案
我解决了错误。我忘记将存储规则更新为公开。
上面的代码是无错误代码......因此,您可以使用此代码在 Firebase 存储上上传多个图像。但是,不要忘记检查 firebase 规则,我在下面添加规则。
firebase 存储规则
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
推荐阅读
- c# - MongoDB在collectionm中搜索特定字符串,放入列表
- windows - 如何使用 Windows Defender 功能删除威胁
- javascript - formatting unstructured array
- flutter - Flutter post请求返回未处理的异常:HttpException:在收到完整标头之前连接已关闭,uri
- java - 如何在 Spring Boot 中捕获错误请求
- c# - c# 在visual studio中调试windows服务
- python - Django:找不到'create_order'的反向
- vb.net - vb.net 在类之间传递字符串
- python - 在数据框中连接多个 for 循环的更好方法
- jquery - 移动 3 级滚动问题