http download file name

Http

Http 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionShivView Question on Stackoverflow
Solution 1 - HttpvtortolaView Answer on Stackoverflow
Solution 2 - HttpMarkus MalkuschView Answer on Stackoverflow
Solution 3 - HttpjcubicView Answer on Stackoverflow