在javascript中更改下载名称

IT技术 html javascript
2021-03-11 01:24:23

如果用户单击可下载的链接,例如

<a href="downloadable.txt">Download</a>

在“另存为”对话框之前,是否有客户端(html 或 javascript)方法来更改文件的名称?

3个回答

HTML5 提供了a[download]让您重命名文件属性。此示例将下载link.txt并重命名它something.txt

​<a download="something.txt" href="link.txt">asdf</a>​​​​​​​​​​​​​​​​​​​​​​​​​​​

请注意,这仅适用于同源 URL(即不能跨越不同域)。

caniuse.com/#feat=download 现在支持 Opera 和 android 浏览器。
2021-04-16 01:24:23
从 20.0 版开始在 Firefox 中工作,但仅适用于来自同一域的文件(请参阅developer.mozilla.org/en-US/docs/Web/HTML/Element/...
2021-04-19 01:24:23
@ElonZito 应该适用于任何事情——它只是一个文件名。是不是你期望的东西不起作用?
2021-04-22 01:24:23
不仅是 Chrome,它还适用于我的 Firefox 28.0。您可以在此处查看兼容性列表:caniuse.com/download
2021-05-06 01:24:23
如果服务器端确实发送了带有文件名的 Content-Disposition 标头(如此处所述:developer.mozilla.org/cs/docs/Web/HTML/Element/a),则下载属性将被忽略
2021-05-12 01:24:23

不,您不能从客户端(HTML 或 javascript)更改此设置。您需要从服务器更改它。一种方法是使用服务器端脚本来设置 Content-Disposition HTTP 响应头:

Content-Disposition: attachment; filename=somecustomname.txt
虽然不是客户端,但这就是我想要的效果。谢谢。
2021-05-11 01:24:23

您可以使用 eligrey 编写的 Filesaver.js 脚本(我在此处的示例中使用 angularjs)您可以使用 XmlHttpRequest 对象在经典 javascript 中实现相同的功能

//In your html code , add these : ->
<script src="https://rawgit.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script>
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular-animate.js"></script>
//In your Javascript:- 

$http({
        url: "url where the file is located",
        method: "GET",
        responseType: "blob"
    }).then(function (response) {

saveAs(response.data,"newfilename.extension");

})