我是否知道如何为a-href文件下载分配文件名.
<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml">get-file</a>
Run Code Online (Sandbox Code Playgroud)
右键单击并另存为:后台运行的服务将返回test.xml内容,用户可以在本地保存.但每次用户都需要输入文件名进行保存.相反,我正在考虑拉取test.xml.我可以知道如何告诉浏览器使用"test.xml"作为下载文件名吗?
HTTP响应上的设置标头是否有效?如果是这样,我可以知道我们怎么做到这一点?
提前致谢!希夫
vto*_*ola 85
您需要附加HTTP响应标头"Content-Disposition"
Response.AppendHeader("content-disposition", "attachment; filename=\"" + fileName +"\"");
Run Code Online (Sandbox Code Playgroud)
干杯.
Mar*_*sch 21
HTTP标头Content-Disposition允许您建议文件名.
Content-Disposition响应头字段[...]可用于附加其他元数据,例如在本地保存响应有效负载时使用的文件名.
如果您查看BNF,您会看到文件名被指定为quoted-string:
quoted-string =(<">*(qdtext | quoted-pair)<">)
这将是一个有效的例子:
Content-Disposition: attachment; filename="fname.ext"
Run Code Online (Sandbox Code Playgroud)
请注意,单引号'无效.如果您需要在文件名中包含引号("),则可以使用\".但是RFC-6266建议避免包含引号:
避免在filename参数的带引号的字符串形式中包含"\"字符,因为某些用户代理未实现转义,并且"\"可以被视为非法路径字符.
在现代浏览器中,您还可以在链接标签上使用下载属性:
<a href="http://localhost:8080/couch/getFile?dbName=xxx&file=test.xml" download="test.xml">
get-file
</a>
Run Code Online (Sandbox Code Playgroud)