http download file name

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?


You need to append the HTTP response header "Content-Disposition"

Response.AppendHeader("content-disposition", "attachment; filename=\"" + fileName +"\"");

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.


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