Firebase Storage get download URL, need help

Hi,

I can’t setup the component “Firebase Storage get download URL” to retrieve the list of my stored files.

A brief tutorial would be nice.

Thank you !

Hi,

The search button is on the top right. If you click it and then type what you need assistance is, you will find relevant articles. It works rather like google.

1 Like

Phil, I know the search button, thanks…
If you read again the post title I am looking for the download url component. not upload…
and for this component, the magic search button give me zero help.

And if you read the post I tagged for you you will see people talking about it.

I can´t stress enough - building an app is hard work. You MUST research things and do lots of reading. For sure the documentation leaves a bit to be desired. But to a degree it forces you to experiment, interpret and learn, thereby helping you develop the skills necessary to create a good app.

Add some screen shots showing what you have done, showing where you are getting stuck. The post I tagged was in the top 5 results.

1 Like

I wonder if I understood correctly what this component is for…

I’m trying to retrieve the properties of a file saved in the Firestore storage.

to allow me to display his name in a list like an attached file.

As for a workaround… I have been using it for quite a while.
Have a firestore collection uploads and upon uploading a file to the storage after the upload flow function do a Create record flow function with the output[""].response data and you can then retrieve first the firestore data record and the storage file referred to in the data record.

1 Like

this is also what I do but I thought that using the component would simplify the flow

sad that no one knows how to use this flow component :frowning:

I mean I called that “workaround” but I just read the docs again and played around with the formula.
You do not need to provide it the full response you got earlier. It can find the proper items just by adding the name property in the input object and leaving the rest empty. So You could filter through by the mimeType and all the other properties. It will provide the proper file(s).

Storing any data about the file that is uploaded is necessary, I mean why would you upload a file and not save anything about it as a data record? What is the point in that? You would just increase your bandwidth usage with Firebase Storage…

So if you only need it like a profile picture for example for a user, just update the user data record with a new property from the upload flow function response. That also has the download url, for example, but you could just retrieve the name and path, so you can use that later.

Or if you need some files that you display with more details, just save those details to a new data record. The more I think of it, the less it feels “workaround”.

Okay for your “attached file” use-case I would only save the name of the uploaded file to the data record that you use to populate the list with at the very moment of upload to storage flow function.
Then if a user clicks or taps the item (that is the name of the file) Then I would use the get download url flow function and search by the name. After that You can open that in a browser window or a pdf-preview or wherever…

I totally agree with you. My example was not very clear. Indeed I had understood that we could search for an element by its name or its property in the bucket. But I can’t… could you send me a small screenshot of the flow please?

Notes. Everything happens on the small cloud icon tap you can see in the background.

First add the Firebase Storage get download URL flow function.

Add the inputs as a list of objects.

Click on “Add another value”:

Then feed the specific name or any property you want to search for:

In this case it is a .png file. In fact it is an Appgyver logo. ;D

On the right side pay attention to the optional inputs part and specify the custom upload path. This is only required if you created subfolders on the Storage. I had done that so I had to add that as well.

After this you have a full response of the flow function. In my case I used an alert to display it, but the response that comes provides these options:

1 Like

you are my savior ! thank you ! I wasted a lot of time looking for the right path when it was simply not necessary to indicate anything.

THANK YOU !

1 Like

Hi @Mihaly_Toth,

I am trying this method to store the data related to the uploaded file.
Basically, as you suggested, used an “update record” function to capture output from the “Firebase upload…” flow.

In my example, I used an image data to be updated to Firebase collection as a list. But the Firebase collection shows an empty list.

Here is what I did. I took the output from the “Firebase upload…” function and passed the .uploadPath, .downloadUrl and other image properties to the “Update Record” function to append to a list as a text in the Firebase record. But that record always comes out as null or empty.

Is there something I am missing?

Can you show what data record you try to update?
Do you update an existing record?

Thanks for the swift reply.

Below image is what I am trying to do.
Inputting a First Name, a Last Name and then browse to an image for upload. It looks convoluted as I was trying various methods to understand how the flow function works.

The second image shows, how I was (trying to) bind the the Image name to the update record flow function.

The third image shows the empty image string in Firebase.

Please let me know if you need more info.

Update Image Record 3_ Composer Pro _ platform.appgyver.com

I think, I found a way to do it. I passed the output (downloadUrl) from the “Firebase Upload…” flow to a page variable and then passed the page variable to the Create Record flow. This seemed to have entered the date to Firebase Image field.

The next step would be download and display the image when the record is being viewed. I’ll pull my hair another day for that.

If you go to the file location url in a web browser without the altmedia tag it will show you the json data and give you insight into how the data is structured so you will have a better understanding of what you are trying to do. It took me a while to find this out as you are correct the people who build these platforms are not good at documenting things. But the people in these forums are top quality out of all forums I have ever seen. It is very frustrating. I too get really mad. I ended up just joining the altmedia string to my upload urls and it works pretty smooth.

1 Like

Bloody Software engineers for you :grin:.
I managed to read a few forum posts from good Samaritans to figure out what I needed to do.
I have got to a stage where I can store the image in the bucket, then save the location data to the database record and finally view the image when I retrieve the record.

The next step is to do the same as above but with multiple images. I guess that can’t be hard now… :sweat_smile:

Sorry for late reply on this. The issue here was that both the create record and firebase storage upload flows were connected to the update record flow. Now file upload usually takes longer time then the create record, so this is why you had null value in the update record.

As for the multiple files. Just change the image property to list of texts. And bind the output of upload flow to that. When browsing files to upload for multiple files use “pick files” flow and not the “take photo” or “pick image from library”. “Pick files” will give you a list of objects, which you could save into a page variable with same schema and then upload, or upload right after the pick files flow which would help skipping the creation of another page variable.

Another thing to note. If you use the image component on the ui, the download url from firebase is enough to display the image.
So if you save the download url as the image property of the record. When you use the get record flow function and set the data variable to the output of the get data record, you can simply select the image source property of the image component to the data.user.image and it will show. The download to device part is a little bit different. But why would you need that anyways? If you need that as well. I can help later.

No problem. I like the troubleshooting part of it and then solving it.
As you see from one of my later posts, that is what I did and it worked like a charm.
I am going to try the multiple image option later and I am sure it will work with no issues.

With regards to the other challenge of displaying an image, I got it to work as well. But then I didn’t understand the purpose of “Firebase Storage get Download URL” after the steps I used to display the image did not use that function at all. But your explanation now makes sense. It is for downloading content rather that just trying to display it.

Excellent. Thanks again for responding.

1 Like