restamazon-s3amazon-web-services

Amazon S3 Change file download name


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?


Solution

  • 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 ;-)