【发布时间】:2012-04-06 20:58:14
【问题描述】:
如果用户点击可下载的链接,例如
<a href="downloadable.txt">Download</a>
是否有客户端(html 或 javascript)方法可以在“另存为”对话框之前更改文件名?
【问题讨论】:
标签: html javascript
如果用户点击可下载的链接,例如
<a href="downloadable.txt">Download</a>
是否有客户端(html 或 javascript)方法可以在“另存为”对话框之前更改文件名?
【问题讨论】:
标签: html javascript
HTML5 提供了a[download] 属性,可让您重命名文件。此示例将下载 link.txt 并将其重命名为 something.txt。
<a download="something.txt" href="link.txt">asdf</a>
请注意,这仅适用于同源 URL(即不能跨不同域)。
【讨论】:
不,您不能从客户端(HTML 或 javascript)更改此设置。您需要从服务器更改它。一种方法是使用服务器端脚本来设置 Content-Disposition HTTP 响应标头:
Content-Disposition: attachment; filename=somecustomname.txt
【讨论】:
您可以使用由 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");
})
【讨论】: