šmit
šmit

Reputation: 1

Download images to users local machines via Firebase Functions

Is it possible to download images to users local machines directly via Firebase functions? How to do it in case that:

  1. Images are stored in Firebase storage.
  2. Images are stored on other cloud storage providers (I can access them with url).

I don't want to download those images via url links so that I don't reveal the url the image is located on.

Upvotes: 0

Views: 149

Answers (2)

Doug Stevenson
Doug Stevenson

Reputation: 317758

Is it possible to download images to users local machines directly via Firebase functions?

No, it's not possible. The client must reach out to the server in order to download content. The content can't be "pushed" to the client without its authorization. That would be a huge security hole for the client.

This is why download URLs exist - to give the client something to download via a normal HTTP request.

Upvotes: 1

Aadmaa
Aadmaa

Reputation: 932

You can create a presigned URL using the Google APIs library. The Firebase bucket is just a regular GCS bucket. Something like this:

const admin = getFirebaseAdmin();
let bucket = admin.storage().bucket(firebaseConfig.storageBucket);

const f = bucket.file(location);
if (!(await f.exists())) {
    throw logError(`No file found at specified location: ${location}`, functionName)
}

const url1 = await f.getSignedUrl({
    action: 'read',
    expires: new Date((new Date).getTime() + (24 * 60) * 60000)   // expires in 24 hours
});
const url = url1[0];

return url;

Upvotes: 0

Related Questions