Skip to content Skip to sidebar Skip to footer

How Can I Download Image On Firebase Storage?

I want to download image on firebase storage in android app. this is my image I try this but it is not working storageRef.child('1/1.jpg').getDownloadUrl().getResult();

Solution 1:

Try this


// Create a storage reference from our appStorageReferencestorageRef= storage.getReference();

// Or Create a reference to a file from a Google Cloud Storage URIStorageReferencegsReference= 
    storage.getReferenceFromUrl("gs://bucket/images/stars.jpg");


/*In this case we'll use this kind of reference*///Download file in MemoryStorageReferenceislandRef= storageRef.child("images/island.jpg");

finallongONE_MEGABYTE=1024 * 1024;
islandRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(newOnSuccessListener<byte[]>() {
    @OverridepublicvoidonSuccess(byte[] bytes) {
        // Data for "images/island.jpg" is returns, use this as needed
    }
}).addOnFailureListener(newOnFailureListener() {
    @OverridepublicvoidonFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

Solution 2:

I'm a little late on this question. I encountered this same problem, but getting the URL (ie: getDownloadUrl() as shown in the Firebase docs) for the file doesn't address the entire problem which is downloading the file.

This is because sending a download (or attachment) response to the browser requires the file content (not the URL). In order to get the URL and obtain the actual file content requires an HTTP request which isn't an option for us using the free Spark Firebase account.

To get around this, I used the download() method from the storage bucket which allowed me save the storage file as a local tmp file. Then I used an fs read stream to pipe the file content to the cloud function response...

const fireapp = '<thebucket>.appspot.com';
const gcs = require('@google-cloud/storage')({keyFilename:'serviceAccount.json'});
const bucket = gcs.bucket(fireapp);

// storage path
let fn = 'folder/theimage.png';

// allow CORS
res.set('Access-Control-Allow-Origin', '*');

// download w/o external http request // by download file from bucket// and saving to tmp folderconst tempFilePath = path.join(os.tmpdir(), "tmpfile.jpg");
bucket.file(fn).download({destination: tempFilePath}).then(()=>{
    console.log('Image downloaded locally to', tempFilePath);
    var filestream = fs.createReadStream(tempFilePath);
    filestream.pipe(response);
});

Solution 3:

To download a file, first create a Cloud Storage reference to the file you want to download.

You can create a reference by appending child paths to the storage root, or you can create a reference from an existing gs:// or https:// URL referencing an object in Cloud Storage.

// Create a storage reference from our appStorageReferencestorageRef= storage.getReference();

// Create a reference with an initial file path and nameStorageReferencepathReference= storageRef.child("images/stars.jpg");

images is the child of root.

storageRef.child("images/stars.jpg").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        // Got the download URL for 'users/me/profile.png'
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

Solution 4:

Try this

// Create a storage reference from our appStorageReferencestorageRef= storage.getReferenceFromUrl("gs://<your-bucket-name>");

// Create a reference with an initial file path and nameStorageReferencepathReference= storageRef.child("users/me/yourpics.png");



storageRef.child("users/me/yourpics.png").getDownloadUrl().addOnSuccessListener(newOnSuccessListener<Uri>() {
            @OverridepublicvoidonSuccess(Uri uri) {
                // Got the download URL for 'users/me/profile.png'
            }
        }).addOnFailureListener(newOnFailureListener() {
            @OverridepublicvoidonFailure(@NonNull Exception exception) {
                // Handle any errors
            }
        });

Download-files

https://firebase.google.com/docs/storage/android/download-files

Solution 5:

package com.example.package.myfirestore;

import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.firestore.FirebaseFirestore;
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.io.IOException;
import java.net.URI;

/**
 * Created by Yeshveer on 6/9/2018.
 */publicclassUploadImgextendsAppCompatActivity{
    private TextView textView1;
    private ImageView img1;
    private EditText edittext1;
    private Button Btn1;
    private Button Btn2;
    int Image_requestcode=7;
    ProgressDialog pd;
    Uri filpath;
    FirebaseStorage storage1;
    StorageReference storageReference;
    StorageReference storageReference2;
    FirebaseFirestore db;

  FirebaseStorage storage;

    @OverrideprotectedvoidonCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView1 = (TextView) findViewById(R.id.textView1);
        img1 = (ImageView) findViewById(R.id.img1);
        edittext1 = (EditText) findViewById(R.id.edittext1);
        Btn1 = (Button) findViewById(R.id.Btn1);
        Btn2 = (Button) findViewById(R.id.Btn2);

        // Create Storage Referece
        storage1=FirebaseStorage.getInstance();
        storageReference = storage1.getReference();

        //PD details
        pd=newProgressDialog(this);
        pd.setTitle("Uploading Image");



// Image Chooser
        Btn1.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View view) {
                // Creating IntentIntentintent=newIntent();

                //Setting Intent of Image type and select Image from Mobile Storage
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(Intent.createChooser(intent, "Please Select Image"), Image_requestcode);
            }
        });

        Btn2.setOnClickListener(newView.OnClickListener() {
            @OverridepublicvoidonClick(View view) {
                UploadingStart();
            }
        });
    }

    privatevoidUploadingStart() {
        // Image path Print

        textView1.setText(GetFileExtension(filpath));
        pd.show();
        storageReference2=storageReference.child("images/"+"hello"+"."+GetFileExtension(filpath));
        storageReference2.putFile(filpath)
                .addOnSuccessListener(newOnSuccessListener<UploadTask.TaskSnapshot>() {
                    @OverridepublicvoidonSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        pd.dismiss();
                        Toast.makeText(UploadImg.this, "Uploaded Successfully", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(newOnFailureListener() {
                    @OverridepublicvoidonFailure(@NonNull Exception e) {
                        pd.dismiss();
                        Toast.makeText(UploadImg.this, "Error in Uploading, Please check Internet connection", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnProgressListener(newOnProgressListener<UploadTask.TaskSnapshot>() {
                    @OverridepublicvoidonProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double progress=(100.0* taskSnapshot.getBytesTransferred()/taskSnapshot.getTotalByteCount());
                        pd.setMessage("Progress is "+(int)progress+"%");
                    }
                });



    }


    @OverrideprotectedvoidonActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==Image_requestcode && resultCode==RESULT_OK && data != null && data.getData() != null){
            filpath=data.getData();

            try {
                // Image content resolver
                Bitmap bitmap= MediaStore.Images.Media.getBitmap(getContentResolver(),filpath);
                img1.setImageBitmap(bitmap);


            } catch (IOException e) {
                e.printStackTrace();
            }


        }
    }



    // Method for file etention and pathpublic String GetFileExtension(Uri uri){
        ContentResolver contentResolver=getContentResolver();
        MimeTypeMap mimeTypeMap=MimeTypeMap.getSingleton();

        // Return file Extensionreturn mimeTypeMap.getExtensionFromMimeType(contentResolver.getType(uri));

    }

}

Post a Comment for "How Can I Download Image On Firebase Storage?"