Using utils.downloadFile in Mobile

Has anyone tried to use the utils.downloadFile function to download a file from a mobile app? My queries run successfully but no file gets downloaded from the preview mode nor on my phone. Any ideas?

2 Likes

Thanks for surfacing this @jeffmul23. The dev team has taken notice of it and I can report back here if they push a fix!

1 Like

Waiting for it!

1 Like

Hey @Sport_360 @jeffmul23 - can I ask what type of data/file you're trying to download? This should be working now!

I want to download documents (pdf, doc(x), etc.) and images (jpegs, gifs, etc.). Is this the correct function to use? "utils.downloadFile"

That's the one @jeffmul23! At the moment it should be supported for native apps and the dev team is working on support for web apps. Have you run into any issues with it?

It works fine in my web app, but not in my native mobile apps

:thinking: what version of Retool are you using? And, just to clarify, is it still not working both when you preview it and when you test it on your phone? Would you mind sharing screenshots of your configuration?

I am using latest version of Retool. It is not working when I preview it or run it from my android phone

This is a screenshot of my code, but what configs do you want me to include?
image

That might be it! If you use documentoDownload.data.blob_documento by itself instead of wrapping it with { base64Binary: documentoDownload.data.blob_documento } does it work?

I tried that too and it still does not work. I don't get any error messages, I check the log and all queries ran successfully. I tried it in the preview mode and on my phone. No document gets downloaded. It works perfectly (using my original code) in the web application with no issue, it's the native one that does not work.

image

:thinking: what type of file are you trying to download? Do you have an example that we could try and download to reproduce the issue, or would you mind if we looked directly at your app?

I am trying to download PDFs

Got it, thanks for that. It looks like there's an issue specifically with android devices. I've let the dev team know and can report back here when there's a fix!

Sharing the same type of issue - as described there:

For me it's an image I'm trying to download

@DocShades are you still seeing the same issue? This is now implemented for native, just need to get it working on web!

as per a few minutes ago, still no indication that any download transaction is happening, be it on the mobile itself or in the mobile dev environment

Still having this issue on Retool Mobile. Trying to download a base64 PDF and nothing happens when I run the query.

Hi @AHerridge Can we see some screenshots. Are you testing this on a mobile device? If so, what kind of device?


As a minimal test, I created a new mobile app with a single button that triggers a javascript query with the following code. I can put the base64 string into an online base64 to PDF converter and get the original file, so I know the base64 string is correct. When I click the button on the web preview (Chrome on a Windows laptop) or on my Google Pixel 7, I don't see any file get downloaded, but the alert I have set up on query success pops up.

JavaScript Query
utils.downloadFile("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MQplbmRvYmoKMTQgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQmFzZUZvbnQgL0RlamFWdVNlcmlmCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSWRlbnRpdHkpIC9TdXBwbGVtZW50IDAgPj4KL0ZvbnREZXNjcmlwdG9yIDEyIDAgUgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9XIFswIFs1OTUgODY1IDU4NyAzMTcgNTk3IDMxNSAxMDIwIDQ3NCA2MzUgXQpdCj4+CmVuZG9iagoxNSAwIG9iago8PCAvTGVuZ3RoIDQyMCA+PgpzdHJlYW0KL0NJREluaXQgL1Byb2NTZXQgZmluZHJlc291cmNlIGJlZ2luCjEyIGRpY3QgYmVnaW4KYmVnaW5jbWFwCi9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoVUNTKSAvU3VwcGxlbWVudCAwID4+IGRlZgovQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWYKL0NNYXBUeXBlIDIgZGVmCjEgYmVnaW5jb2Rlc3BhY2VyYW5nZQo8MDAwMD4gPEZGRkY+CmVuZGNvZGVzcGFjZXJhbmdlCjIgYmVnaW5iZnJhbmdlCjwwMDAwPiA8MDAwMD4gPDAwMDA+CjwwMDAxPiA8MDAwOD4gWzwwMDQ4PiA8MDA2NT4gPDAwNkM+IDwwMDZGPiA8MDAwOT4gPDAwNTc+IDwwMDcyPiA8MDA2ND4gXQplbmRiZnJhbmdlCmVuZGNtYXAKQ01hcE5hbWUgY3VycmVudGRpY3QgL0NNYXAgZGVmaW5lcmVzb3VyY2UgcG9wCmVuZAplbmQKZW5kc3RyZWFtCmVuZG9iago3IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0RlamFWdVNlcmlmCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxNCAwIFJdCi9Ub1VuaWNvZGUgMTUgMCBSPj4KZW5kb2JqCjMgMCBvYmoKPDwKL1R5cGUgL1BhZ2VzCi9LaWRzIApbCjYgMCBSCl0KL0NvdW50IDEKL1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDXQo+PgplbmRvYmoKeHJlZgowIDE3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMTIwIDAwMDAwIG4gCjAwMDAwMDYyNjUgMDAwMDAgbiAKMDAwMDAwMDE2OSAwMDAwMCBuIAowMDAwMDAwMjY0IDAwMDAwIG4gCjAwMDAwMDAzMDEgMDAwMDAgbiAKMDAwMDAwNjEyOCAwMDAwMCBuIAowMDAwMDAwNjA3IDAwMDAwIG4gCjAwMDAwMDA5MjcgMDAwMDAgbiAKMDAwMDAwMDQyMSAwMDAwMCBuIAowMDAwMDAwNTg3IDAwMDAwIG4gCjAwMDAwMDA5NDYgMDAwMDAgbiAKMDAwMDAwMTIwNyAwMDAwMCBuIAowMDAwMDA1NDA5IDAwMDAwIG4gCjAwMDAwMDU2NTcgMDAwMDAgbiAKMDAwMDAwNTM4OCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDE3Ci9JbmZvIDEgMCBSCi9Sb290IDIgMCBSCj4+CnN0YXJ0eHJlZgo2MzYzCiUlRU9GCg==", "artist-invoice-template.pdf", "pdf")