http下载文件名

时间:2012-11-09 11:45:23

标签: http

我是否知道如何为a-href文件下载分配文件名。

<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml">get-file</a>

右键单击并另存为:后台运行的服务将返回test.xml内容,用户可以在本地保存。但每次用户都需要输入文件名进行保存。相反,我正在考虑拉取test.xml。我是否知道如何告诉浏览器使用“test.xml”作为下载文件名?

HTTP响应上的设置标头是否有效?如果是这样,我可以知道我们该怎么做?

3 个答案:

答案 0 :(得分:79)

您需要附加HTTP响应标头“Content-Disposition”

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

干杯。

答案 1 :(得分:18)

HTTP标头Content-Disposition允许您建议文件名。

  

Content-Disposition响应头字段[...]可用于附加   其他元数据,例如保存时使用的文件名   在本地响应有效载荷。

如果查看BNF,您会看到文件名被指定为quoted-string

  

quoted-string =(&lt;“&gt; *(qdtext | quoted-pair)&lt;”&gt;)

这是一个有效的例子:

Content-Disposition: attachment; filename="fname.ext"

请注意,单引号'无效。如果您需要在文件名中包含引号(“),则可以使用\”。但是RFC-6266 suggests to avoid including quotes

  

避免在引号字符串形式中包含“\”字符     filename参数,因为某些用户没有实现转义     代理人和“\”可被视为非法路径角色。

答案 2 :(得分:2)

在现代浏览器中,您还可以在链接标记上使用下载属性:

<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml" download="test.xml">
    get-file
</a>

您可以在Can I use上查看它的支持