我是否知道如何为a-href文件下载分配文件名。
<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml">get-file</a>
右键单击并另存为:后台运行的服务将返回test.xml内容,用户可以在本地保存。但每次用户都需要输入文件名进行保存。相反,我正在考虑拉取test.xml。我是否知道如何告诉浏览器使用“test.xml”作为下载文件名?
HTTP响应上的设置标头是否有效?如果是这样,我可以知道我们该怎么做?
答案 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上查看它的支持