http download file name
HttpHttp Problem Overview
May i know how to assign a file-name to a a-href file download.
<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml">get-file</a>
On right-clicking and Save as: A services running on the background will return test.xml contents and the user can save it locally. But here everytime user needs to type a filename for saving. Instead i'm thinking to pull the test.xml. May i know how to tell the browser to use "test.xml" as a download file name?
Will setting headers on HTTP response would work? if so may i know how we can do that?
Http Solutions
Solution 1 - Http
You need to append the HTTP response header "Content-Disposition"
Response.AppendHeader("content-disposition", "attachment; filename=\"" + fileName +"\"");
Solution 2 - Http
The HTTP header Content-Disposition
allows you to suggest a file name.
> The Content-Disposition response header field […] can be used to attach > additional metadata, such as the filename to use when saving the > response payload locally.
If you look at the BNF you'll see that the filename is specified as a quoted-string
:
> quoted-string = ( <"> *(qdtext | quoted-pair ) <"> )
This would be a valid example:
Content-Disposition: attachment; filename="fname.ext"
Please note that single quotes '
are not valid. If you need to include quotes (") in your filename you can use ". However RFC-6266 suggests to avoid including quotes:
> Avoid including the "" character in the quoted-string form of the filename parameter, as escaping is not implemented by some user agents, and "" can be considered an illegal path character.
Solution 3 - Http
In modern browsers you can also use download attribute on link tag:
<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml" download="test.xml">
get-file
</a>
You can check it's support on Can I use