I have files stored on S3 with a GUID as the key name.
I am using a pre signed URL to download as per S3 REST API
I store the original file name in my own Database. When a user clicks to download a file from my web application I want to return their original file name, but currently all they get is a GUID. How can I achieve this?
My web app is in salesforce so I do not have much control to do response.redirects all download the file to the web server then rename it due to governor limitations.
Is there some HTML redirect, meta refresh, Javascript I can use? Is there some way to change the download file name for S3 (the only thing I can think of is coping the object to a new name, downloading it, then deleting it).
I want to avoid creating a bucket per user as we will have a lot of users and still no guarantee each file with in each bucket will have a unique name
Any other solutions?
I guess your cross posted this questions to Amazon S3 forum, but for the sake of others I'd like to post the answer here:
If there is only ever one "user filename" for each S3 object, then you can set the Content-Disposition header on your s3 file to set the downloading filename:
Content-Disposition: attachment; filename="foo.bar"
For the sake of fairness I'd like to mention that it was not me to provide the right answer on Amazon forum and all credits should go to Colin Rhodes ;-)