无法在Firebase上实现多图上传的 addOnSuccessListener,即进入 addOnFailureListener。

huangapple go评论98阅读模式
英文:

not working addOnSuccessListener for multiple image uploading on firebase. i.e. entering in addOnFailureListener

问题

  1. private void saveProject() {
  2. String pro_name, client_name, pro_rec_date, pro_comp_date, total_views, pro_no, arch_no;
  3. pro_no = binding.projectNo.getText().toString();
  4. arch_no = binding.architectNumber.getText().toString();
  5. pro_name = binding.projectName.getText().toString();
  6. client_name = binding.ClientName.getText().toString();
  7. pro_comp_date = binding.projectCompleteDate.getText().toString();
  8. pro_rec_date = binding.projectReceivedDate.getText().toString();
  9. total_views = binding.totalViewsOfPhotos.getText().toString();
  10. progressDialog.setMessage("Writing in Database...");
  11. progressDialog.setCancelable(false);
  12. progressDialog.setIcon(R.mipmap.ic_launcher_round);
  13. progressDialog.setTitle("Aurum Design");
  14. progressDialog.show();
  15. if (!(item.equals("Payment Received or Not?") && item2.equals("Project Status"))) {
  16. reference = FirebaseDatabase.getInstance().getReference("project_details");
  17. StorageReference ImageFolder = FirebaseStorage.getInstance().getReference().child("ProjectImages");
  18. final HashMap<String, Object> hashMap = new HashMap<>();
  19. //upload data
  20. hashMap.put("architect_no", arch_no);
  21. hashMap.put("client_name", client_name);
  22. hashMap.put("payment_received", item);
  23. hashMap.put("project_status", item2);
  24. hashMap.put("project_complete_date", pro_comp_date);
  25. hashMap.put("project_name", pro_name);
  26. hashMap.put("project_no", pro_no);
  27. hashMap.put("project_received_date", pro_rec_date);
  28. hashMap.put("total_views_of_photos", total_views);
  29. //upload Images
  30. for (upload_count = 0; upload_count < uri.size(); upload_count++) {
  31. Uri IndividualImage = uri.get(upload_count);
  32. final StorageReference ImageName = ImageFolder.child("Image" + pro_name + IndividualImage.getLastPathSegment());
  33. ImageName.putFile(IndividualImage).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  34. @Override
  35. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  36. ImageName.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  37. @Override
  38. public void onSuccess(Uri uri) {
  39. String URL = String.valueOf(uri);
  40. hashMap.put("image_url" + upload_count, URL);
  41. }
  42. });
  43. }
  44. }).addOnFailureListener(new OnFailureListener() {
  45. @Override
  46. public void onFailure(@NonNull Exception e) {
  47. Toast.makeText(activity, "failed", Toast.LENGTH_SHORT).show();
  48. }
  49. });
  50. }
  51. reference.push().setValue(hashMap);
  52. uri.clear();
  53. progressDialog.dismiss();
  54. startActivity(new Intent(activity, MainActivity.class));
  55. activity.finish();
  56. } else {
  57. progressDialog.dismiss();
  58. Toast.makeText(activity, "select payment received or not?", Toast.LENGTH_SHORT).show();
  59. new Handler().postDelayed(new Runnable() {
  60. @Override
  61. public void run() {
  62. Toast.makeText(activity, "select Project Status", Toast.LENGTH_SHORT).show();
  63. }
  64. }, 1000);
  65. }
  66. }

in the upper code addOnSuccessListener is not working

  1. ImageName.putFile(IndividualImage).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
  2. @Override
  3. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  4. ImageName.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
  5. @Override
  6. public void onSuccess(Uri uri) {
  7. String URL = String.valueOf(uri);
  8. hashMap.put("image_url" + upload_count, URL);
  9. }
  10. });
  11. }
  12. }).addOnFailureListener(new OnFailureListener() {
  13. @Override
  14. public void onFailure(@NonNull Exception e) {
  15. Toast.makeText(activity, "failed", Toast.LENGTH_SHORT).show();
  16. }
  17. });

please anyone knows the solution, please tell me. THANKS IN ADVANCE...

  1. <details>
  2. <summary>英文:</summary>
  3. I want to upload multiple images on firebase storege. but I am not able to upload it.
  4. Below is my code.
  5. ******
  6. **AddNewProjectActivity.java &quot;save project method&quot;**

private void saveProject() {

  1. String pro_name, client_name, pro_rec_date, pro_comp_date, total_views, pro_no, arch_no;
  2. pro_no = binding.projectNo.getText().toString();
  3. arch_no = binding.architectNumber.getText().toString();
  4. pro_name = binding.projectName.getText().toString();
  5. client_name = binding.ClientName.getText().toString();
  6. pro_comp_date = binding.projectCompleteDate.getText().toString();
  7. pro_rec_date = binding.projectReceivedDate.getText().toString();
  8. total_views = binding.totalViewsOfPhotos.getText().toString();
  9. progressDialog.setMessage(&quot;Writing in Database...&quot;);
  10. progressDialog.setCancelable(false);
  11. progressDialog.setIcon(R.mipmap.ic_launcher_round);
  12. progressDialog.setTitle(&quot;Aurum Design&quot;);
  13. progressDialog.show();
  14. if (!(item.equals(&quot;Payment Received or Not?&quot;) &amp;&amp; item2.equals(&quot;Project Status&quot;))) {
  15. reference = FirebaseDatabase.getInstance().getReference(&quot;project_details&quot;);
  16. StorageReference ImageFolder = FirebaseStorage.getInstance().getReference().child(&quot;ProjectImages&quot;);
  17. final HashMap&lt;String, Object&gt; hashMap = new HashMap&lt;&gt;();
  18. //upload data
  19. hashMap.put(&quot;architect_no&quot;, arch_no);
  20. hashMap.put(&quot;client_name&quot;, client_name);
  21. hashMap.put(&quot;payment_received&quot;, item);
  22. hashMap.put(&quot;project_status&quot;, item2);
  23. hashMap.put(&quot;project_complete_date&quot;, pro_comp_date);
  24. hashMap.put(&quot;project_name&quot;, pro_name);
  25. hashMap.put(&quot;project_no&quot;, pro_no);
  26. hashMap.put(&quot;project_received_date&quot;, pro_rec_date);
  27. hashMap.put(&quot;total_views_of_photos&quot;, total_views);
  28. //upload Images
  29. for (upload_count = 0; upload_count &lt; uri.size(); upload_count++) {
  30. Uri IndividualImage = uri.get(upload_count);
  31. final StorageReference ImageName = ImageFolder.child(&quot;Image&quot; + pro_name + IndividualImage.getLastPathSegment());
  32. ImageName.putFile(IndividualImage).addOnSuccessListener(new OnSuccessListener&lt;UploadTask.TaskSnapshot&gt;() {
  33. @Override
  34. public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
  35. ImageName.getDownloadUrl().addOnSuccessListener(new OnSuccessListener&lt;Uri&gt;() {
  36. @Override
  37. public void onSuccess(Uri uri) {
  38. String URL = String.valueOf(uri);
  39. hashMap.put(&quot;image_url&quot;+upload_count,URL);
  40. }
  41. });
  42. }
  43. }).addOnFailureListener(new OnFailureListener() {
  44. @Override
  45. public void onFailure(@NonNull Exception e) {
  46. Toast.makeText(activity, &quot;failed&quot;, Toast.LENGTH_SHORT).show();
  47. }
  48. });
  49. }
  50. reference.push().setValue(hashMap);
  51. uri.clear();
  52. progressDialog.dismiss();
  53. startActivity(new Intent(activity, MainActivity.class));
  54. activity.finish();
  55. } else {
  56. progressDialog.dismiss();
  57. Toast.makeText(activity, &quot;select payment received or not?&quot;, Toast.LENGTH_SHORT).show();
  58. new Handler().postDelayed(new Runnable() {
  59. @Override
  60. public void run() {
  61. Toast.makeText(activity, &quot;select Project Status&quot;, Toast.LENGTH_SHORT).show();
  62. }
  63. }, 1000);
  64. }
  65. }
  1. ******
  2. ***in the upper code addOnSuccessListener is not working***
  3. ******
  4. **entering in 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();
}
});

  1. ******
  2. please anyone knows the solution, please tell me. THANKS IN ADVANCE...
  3. </details>
  4. # 答案1
  5. **得分**: 0
  6. 我解决了这个错误。我忘记将存储规则更新为公开。
  7. ****
  8. 上面的代码是没有错误的代码...所以,你可以使用这段代码来在Firebase存储上上传多张图片。***但是,不要忘记检查Firebase规则***,我在下面添加了规则。
  9. ****
  10. **Firebase存储规则**
  11. ```firebase存储规则
  12. rules_version = '2';
  13. service firebase.storage {
  14. match /b/{bucket}/o {
  15. match /{allPaths=**} {
  16. allow read, write;
  17. }
  18. }
  19. }```
  20. <details>
  21. <summary>英文:</summary>
  22. **I solved the error. I forgot to update storage rules to public.**
  23. ****
  24. upper code is error free code... so, you can use this code for upload multiple images on firebase storage. ***but, dont forget to check the firebase rules***, I am adding rules below.
  25. ****
  26. **firebase storage rules**

rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}

  1. </details>

huangapple
  • 本文由 发表于 2020年10月17日 17:08:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/64400801.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定