Cannot write/export file to Downloads folder on iOS

I’m trying to write a CSV file that a user can access/share.

The basic process I’m following is:

  • Prep the data
  • Build CSV in JavaScript module
  • Write file module - on Android, I can write the file to and it works fine
  • On iOS, I write the file to systemVars.fileSystem.directories.document

This works, but it puts the file in a directory the user can’t access. Is there a way to put it directly in Downloads?

I tried using the Export to Downloads module (is this what it’s for? The docs are sparse), but that module doesn’t appear to be doing anything. I use Get file/directory info to get the File object to pass to Export to Downloads and I attached alerts to both outputs (success and error), but nothing gets triggered at all.

Bumping this back up bump

Hi, I have the same issue today with the runtime 4.5.7 on Android 12 on a Galaxy Note 20 Ultra with the SAP AppGyver Preview app (I didn’t try with the APK yet).

Here is my workflow:

My “Write file”:

My “Export to downloads” just takes in input the output of “Write file”:

And the JS code that generates the CSV just in case:

Everything succeeds because I can see the toast “Export réussi…” on the right of my workflow, but I don’t see any file exported in my Downloads folder (or in any folder that I can access).

Additional info

Last year when I worked on this app, I was just able to use “Write file” and it wrote directly to my Downloads folder.

But today, this doesn’t work anymore because it looks like the variable that should point to /storage/emulated/0/Download according to the documentation now points to a private folder of the app as I witnessed when I tried to write the file to it:

1 Like

Actually, I was able to use only “Write file” to write the file to the “Downloads” folder of the device.

I just replaced the variable systemVars.fileSystem.directories.* with a hard-coded path /storage/emulated/0/Download and I can now see the file in the “Downloads” folder.

So it looks like:

  • The documentation of systemVars.fileSystem.directories.* is outdated.
  • Using absolute hard-coded paths works.

My workflow now looks like this:

And my “Write file” has this path:

"/storage/emulated/0/Download/" + outputs["Get record"] + "-" + NOW("YYYY-MM-DD-HH-mm-ss") + ".csv"

Hope it helps someone else.

1 Like

Indeed, your solution seems to work on Android (which wasn’t even having this problem when I first posted…haha.)

My original thread was about iOS though - have you gotten it to work there?