0

i want to upload images in firebase from the four boxes and getdownload url for each

I am writing an app to test out firebase where a user can upload product with images. I'm having issues with the upload as although the pictures are stored, they are not linked to the product (images array not being passed?) and LeakCanary signals an outofmemory error. All help and input appreciated.

Here's my Product Model

        final ProgressDialog mDialog = new ProgressDialog(this);
        mDialog.setMessage("Uploading....");
        mDialog.show();

    newFood = new Food();
            final String imageName = UUID.randomUUID().toString();
            final StorageReference imageFolder = storageReference.child("images/" + Common.imgFront.getLastPathSegment());
            final StorageReference imageFolder1 = storageReference.child("images/" + Common.imgBack.getLastPathSegment());
            final StorageReference imageFolder2 = storageReference.child("images/" + Common.imgRight.getLastPathSegment());
            final StorageReference imageFolder3 = storageReference.child("images/" + Common.imgLeft.getLastPathSegment());

            imageFolder.putFile(saveUri)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {


                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                            //   Toast.makeText(FileUpload.this, "Uploaded !!!", Toast.LENGTH_SHORT).show();
                            imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {



                                    newFood.setName(carName.getText().toString());
                                    newFood.setEngine(carEngine.getText().toString());
                                    newFood.setPrice(carPrice.getText().toString());
                                    newFood.setTransmission(carTransmission.getText().toString());
                                    newFood.setCondition(carCondition.getText().toString());
                                    newFood.setOther(otherDescription.getText().toString());
                                    newFood.setDiscount(carDiscount.getText().toString());
                                    newFood.setMenuId(categoryId);
                                    newFood.setImagefront(uri.toString());
                                }
                            });
                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            mDialog.dismiss();
                            Toast.makeText(FileUpload.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
                        }
                    });

    imageFolder1.putFile(saveUri)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {


                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    //   Toast.makeText(FileUpload.this, "Uploaded !!!", Toast.LENGTH_SHORT).show();
                    imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {



                              newFood.setImageback(uri.toString());
                        }
                    });
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    mDialog.dismiss();
                    Toast.makeText(FileUpload.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

    imageFolder2.putFile(saveUri)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {


                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    //   Toast.makeText(FileUpload.this, "Uploaded !!!", Toast.LENGTH_SHORT).show();
                    imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {

                            newFood.setImageright(uri.toString());
                        }
                    });
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    mDialog.dismiss();
                    Toast.makeText(FileUpload.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

    imageFolder3.putFile(saveUri)
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {


                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                    mDialog.dismiss();
                       Toast.makeText(FileUpload.this, "Uploaded !!!", Toast.LENGTH_SHORT).show();
                    imageFolder.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {

                            newFood.setImageleft(uri.toString());

                            if (newFood !=null)
                            {
                                foods.push().setValue(newFood);
                                Snackbar.make(rootLayout, "New Car "+newFood.getName()+ " was added",Snackbar.LENGTH_SHORT)
                                        .show();
                            }
                        }
                    });
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    mDialog.dismiss();
                    Toast.makeText(FileUpload.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });

1 Answers1

0

There is no API to upload or download multiple images at the same time with Firebase storage. You can check a workaround on this other stack overflow question

bensadiku
  • 436
  • 3
  • 15