javascript - 我可以使用 HTML 'download' 属性提示下载文件名吗?

标签 javascript html download

我正在使用download属性指定文件名以将数据下载为 .csv 文件,使用以下代码

  $(this).attr({
    'download': fileName,
    'href': csvData,
    'target': '_blank'
  });

这工作得很好,只是文件名是基于从中检索数据的 URL,因此它可能会变得非常长且复杂。

是否可以用文件名“提示”用户 - IOW,当用户单击下载链接时,Windows 资源管理器(或等效操作系统)会显示“另存为”提示,并显示 fileName作为默认值?

FWIW,我尝试在 fileName 开头使用“无效”字符,例如问号,无济于事。我还尝试了 target 的其他值属性,但也没有骰子。

显然,我可以在代码中添加一个提示来显示文件名,然后允许用户在那里指定名称,但如果我错过了一些明显的东西......

编辑

举个例子,为了清楚起见,这里有一个示例网页,其中有两个 <A>图像链接 - 一个显示图像,一个下载它:

<html>
<head>
</head>
<body>
<a href="http://www.userlogos.org/files/logos/pek/stackoverflow.png">Link to image</a>
<br>
<a href="http://www.userlogos.org/files/logos/pek/stackoverflow.png" download="stackoverflow.png">Download image</a>
</body>
</html>

第二个直接下载图像,如“stackoverflow.png”。我希望能够打开“另存为”对话框(如果可能的话),以便用户可以选择用于保存图像的名称。就像右键单击图像并选择“图像另存为...”一样。我意识到这可能是不可能的,因为这确实发生在浏览器和操作系统之间的实例中,但我希望,例如,我指定 download=?stackoverflow.png"那么也许它会提示名字。但显然不是。

最佳答案

无法使用链接上的任何属性设置文件名。但是,如果您可以修改服务器的请求以添加 Content-Disposition header 中,您可以为下载的文件设置特定的文件名,而不管 URL 的结构如何。

具体需要设置的 header 是:

Content-Disposition: attachment; filename="yourfilename.pdf"

关于javascript - 我可以使用 HTML 'download' 属性提示下载文件名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39353510/

相关文章:

javascript - 按作为字符串传递的 "grand.child.property"对对象数组进行排序的函数

javascript - 在 f :ajax "success" event only when validation has not failed 上执行脚本

html - 菜单行为不当

javascript - 请帮我把这个脚本转换成一个简单的图像 slider

html - 单独的 Primefaces css 和其他 css 样式

PDF 浏览器请求进入深度卡住

javascript - HTML5 Canvas 问题?

javascript - getElementById 仍然是 "safe"DOM 操作方法

javascript - 如何从NodeJS下载Mongodb Collection

browser - 使用 JavaFX WebView 下载