0

I have uploaded multiple images in firebase storage and now I want to add their urls in data so along with other data. How do i do it? I am getting all urls in log but app crashes when i try to use the following code?

storageReference = FirebaseStorage.getInstance().getReference();
        databaseReference= FirebaseDatabase.getInstance().getReference().child("Blog Data");

final DatabaseReference newBlog = databaseReference.push();
 for (int i = 0; i < list.size(); i++)

        {
            if (imageUri != null) {

                final StorageReference ref = filePath.child(fileName[i]);

                final int y = i;
                ref.putFile(imageUri[i])
                        .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                                  @Override
                                                  public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                                      progressDialog.cancel();
                                                      Toast.makeText(getApplicationContext(), "Uploaded successfuly", Toast.LENGTH_LONG).show();
                                                   downloadUri[y] = taskSnapshot.getDownloadUrl();
                                                      Log.i("DownlaodUri ", "downlaod URi is :"+downloadUri[y].toString());

                                                     newBlog.child("image_"+y+1).setValue(downloadUri[y]);




                                                  }


                                              }

                        )

I also tried to use another for loop after first loop to store urls. It saves all data in database but doesnt store urls.

This is how I tried it.

}// end of upper for loop
       DatabaseReference newBlog = databaseReference.push();
        newBlog.child("title").setValue(title);
        newBlog.child("desc").setValue(desc);


        for(int i =  0; i<list.size(); i++) {

           newBlog.child("image_"+i+1).setValue(downloadUri[i]);
       }
       newBlog.child("location").setValue(location);

It stores all the values except images.

After storing all image url in database how am I supposed to fetch all images as I wont be knowing number of images in database so I cant make certain number of imageview ? how do i get to know that how many child names "ïmages_1", "images_2" a node has?

Logcat.

identical 617 lines
05-22 15:07:22.736 29586-29586/com.example.anant.ExampleE/UncaughtException:     at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                    at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                    at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                    at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                    at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                    at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                    at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)



I/zygote64: Background concurrent copying GC freed 635684(49MB) AllocSpace objects, 1(20KB) LOS objects, 44% free, 29MB/53MB, paused 377us total 111.410ms
05-22 15:07:22.737 29586-29586/com.example.anant.ExampleE/UncaughtException:     at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                    at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                    at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                    at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)

I/chatty: uid=10162(com.example.anant.Example) identical 1231 lines
05-22 15:07:23.524 29586-29586/com.example.anant.ExampleE/AndroidRuntime:     at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)

FATAL EXCEPTION: main
                                                                             Process: com.example.anant.Example, PID: 29586
                                                                             java.lang.StackOverflowError: stack size 8MB
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:128)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
                                                                                 at com.google.android.gms.internal.zzekq.zzca(Unknown Source:132)
                                                                                 at com.google.android.gms.internal.zzekp.zzbw(Unknown Source:263)
                                                                                 at com.google.android.gms.internal.zzekp.zzbz(Unknown Source:0)
Anant Pundir
  • 91
  • 1
  • 10

2 Answers2

1

I forgot to add .toString when Passing downloadUri to setvalue(). Thats what caused overFlow exception.

Refer this question for details

https://stackoverflow.com/a/38128667/8457096

ps. I don't know why people downvote question if they cant answer it.

Anant Pundir
  • 91
  • 1
  • 10
0
storageReference = FirebaseStorage.getInstance().getReference();
    databaseReference= FirebaseDatabase.getInstance().getReference().child("Blog Data");

//final DatabaseReference newBlog = databaseReference.push();//not required
 for (int i = 0; i < list.size(); i++)

    {
        if (imageUri != null) {

            final StorageReference ref = filePath.child(fileName[i]);

            final int y = i;
            ref.putFile(imageUri[i])
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                              @Override
                                              public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                                  progressDialog.cancel();
                                                  Toast.makeText(getApplicationContext(), "Uploaded successfuly", Toast.LENGTH_LONG).show();
                                               downloadUri[y] = taskSnapshot.getDownloadUrl();
                                                  Log.i("DownlaodUri ", "downlaod URi is :"+downloadUri[y].toString());

        HashMap map = new HashMap();
        map.put("image_url",downloadUri[y]);
                                                 databaseReference.push().updateChildren(map);




                                              }


                                          }

                    )

please try to edit the code like above and try..

Jinson Paul
  • 481
  • 6
  • 17
  • this error is caused by some memory overflow exception not caused by firebase may be caused by some listview adapter holding all the images to be uploaded – Jinson Paul May 22 '18 at 09:49
  • But when I remove line newBlog.child("image_").setValue(downloadUri[y]); It works perfectly. Also the urls are not added even after the end of for loop. check quest pls – Anant Pundir May 22 '18 at 09:51
  • DatabaseReference newBlog = databaseReference.getInstance().getReference().child("Images"); for(int i = 0; i – Jinson Paul May 22 '18 at 09:55
  • It was stupid mistake I did. I forgot to add .toString when passing downloadUri to setvalue() instead did it in log. its working now. last question How do get number of images stored in a node ? – Anant Pundir May 22 '18 at 10:02
  • Add Using newBlog.push().child("image_url").setValue(download url in string); Then inside onDataChange of addValueEventListener call dataSnapshot.getChildrenCount() to get no of urls added – Jinson Paul May 22 '18 at 10:26