'Upload Text and Multiple Images to Firebase - Android Studio

How do you upload multiple images to firebase with a text file? I can upload the one image file find but once I add the second fileRef for the second image in the saveVehicle area it doesn't upload anything at all.

I have tried putting an if statement before the Storage Reference and still nothing.

EDIT: In the "private void saveVehicle()" section when I put in the code for "fileRef2" to save a secondary picture nothing happens. It does not upload to Firebase. Without "fileRef2" code the first image and texts saves fine. How do I save multiple images into one file?

Here is my code:

'''

package com.example.a7kvehicleinventoryapp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NavUtils;

import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.material.snackbar.Snackbar;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.util.ArrayList;
import java.util.UUID;

public class EditorActivity extends AppCompatActivity {

    /** EditText field to enter the vehicle attributes */
    private EditText mNameEditText;
    private ImageButton mPic1Image;
    private ImageButton mPic2Image;
    private ImageButton mPic3Image;
    private ImageButton mPic4Image;
    private Uri mImageUri1;
    private Uri mImageUri2;
    private Uri mImageUri3;
    private Uri mImageUri4;

    private FirebaseDatabase db = FirebaseDatabase.getInstance();
    private DatabaseReference root = db.getReference("Vehicles");
    private FirebaseStorage mStorage = FirebaseStorage.getInstance();
    private StorageReference mStorageReference = mStorage.getReference();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_editor);

        // Find all relevant views that we will need to read user input from
        mNameEditText = findViewById(R.id.edit_vehicle_customer_name);
        mPic1Image = findViewById(R.id.edit_vehicle_pic_1);
        mPic2Image = findViewById(R.id.edit_vehicle_pic_2);
        mPic3Image = findViewById(R.id.edit_vehicle_pic_3);
        mPic4Image = findViewById(R.id.edit_vehicle_pic_4);

        mPic1Image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                choosePicture1();
            }
        });
        mPic2Image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                choosePicture2();
            }
        });
        mPic3Image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                choosePicture3();
            }
        });
        mPic4Image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                choosePicture4();
            }
        });
    }

    private void choosePicture1() {
        Intent galleryIntent = new Intent();
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        galleryIntent.setType("image/*");
        startActivityForResult(galleryIntent, 1);
    }

    private void choosePicture2() {
        Intent galleryIntent = new Intent();
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        galleryIntent.setType("image/*");
        startActivityForResult(galleryIntent, 2);
    }

    private void choosePicture3() {
        Intent galleryIntent = new Intent();
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        galleryIntent.setType("image/*");
        startActivityForResult(galleryIntent, 3);
    }

    private void choosePicture4() {
        Intent galleryIntent = new Intent();
        galleryIntent.setAction(Intent.ACTION_GET_CONTENT);
        galleryIntent.setType("image/*");
        startActivityForResult(galleryIntent, 4);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
            mImageUri1 = data.getData();
            mPic1Image.setImageURI(mImageUri1);
        }

        if(requestCode == 2 && resultCode == RESULT_OK && data != null && data.getData() != null) {
            mImageUri2 = data.getData();
            mPic2Image.setImageURI(mImageUri2);
        }

        if(requestCode == 3 && resultCode == RESULT_OK && data != null && data.getData() != null) {
            mImageUri3 = data.getData();
            mPic3Image.setImageURI(mImageUri3);
        }

        if(requestCode == 4 && resultCode == RESULT_OK && data != null && data.getData() != null) {
            mImageUri4 = data.getData();
            mPic4Image.setImageURI(mImageUri4);
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu options from the res/menu/menu_editor.xml file.
        // This adds menu items to the app bar.
        getMenuInflater().inflate(R.menu.menu_editor, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // User clicked on a menu option in the app bar overflow menu
        switch (item.getItemId()) {
            // Respond to a click on the "Save" menu option
            case R.id.action_save:
                // Save vehicle to database
                saveVehicle();
                // Exit activity start new
                startActivity(new Intent(EditorActivity.this, InventoryActivity.class));
                return true;
            // Respond to a click on the "Delete" menu option
            case R.id.action_delete:
                // Pop up confirmation dialog for deletion
                //showDeleteConfirmationDialog();
                return true;
            // Respond to a click on the "Delete" menu option
            case R.id.action_email:
                // Pop up confirmation dialog for deletion
                //showEmailConfirmationDialog();
                return true;
            // Respond to a click on the "Up" arrow button in the app bar
            case android.R.id.home:

                NavUtils.navigateUpFromSameTask(EditorActivity.this);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

    private void saveVehicle() {

        final ProgressDialog pd = new ProgressDialog(this);
        pd.setTitle("Uploading");
        pd.show();

        final String nameString = mNameEditText.getText().toString().trim();

        final DatabaseReference db = root.push();
        StorageReference fileRef1 = mStorageReference.child("Images").child(mImageUri1.getLastPathSegment());
        StorageReference fileRef2 = mStorageReference.child("Images").child(mImageUri2.getLastPathSegment());
        fileRef1.putFile(mImageUri1).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                fileRef1.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        db.child("name").setValue(nameString);
                        db.child("image1").setValue(uri.toString());
                        pd.dismiss();
                        Toast.makeText(EditorActivity.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
                    }
                });

            }
        });

        fileRef2.putFile(mImageUri2).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                fileRef2.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        db.child("image2").setValue(uri.toString());
                        pd.dismiss();
                        Toast.makeText(EditorActivity.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
                    }
                });

            }
        });

    }


}

'''



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source