bru*_*007 12 javascript file download
我希望能够下载Web文件,但是当打开下载对话框时,将重命名文件名.
例如:文件: http://<server>/<site>/test.txt
当我点击下载文件时,下载对话框打开,文件名为:test001.txt.
我怎么能做到这一点?
Dmi*_*ich 17
正如InviS建议的那样,现在download链接上有一个属性.
例:
<a href="http://server/site/test.txt" download="test001.txt">Download Your File</a>
Run Code Online (Sandbox Code Playgroud)
您可以在链接标签上使用下载属性 <a href="http://server/site/test.txt" download="test001.txt">Download Your File</a>
但是,当在服务器响应上设置 content-disposition 标头时,它将忽略下载属性,并且文件名将设置为 content-disposition 响应标头中的文件名
您可以使用 axios 或通过执行以下任何其他获取来完成此操作:
const downloadAs = (url, name) => {
Axios.get(url, {
headers: {
"Content-Type": "application/octet-stream"
},
responseType: "blob"
})
.then(response => {
const a = document.createElement("a");
const url = window.URL.createObjectURL(response.data);
a.href = url;
a.download = name;
a.click();
})
.catch(err => {
console.log("error", err);
});
};
Run Code Online (Sandbox Code Playgroud)
用法:
downloadAs('filedownloadlink', 'newfilename');
Run Code Online (Sandbox Code Playgroud)
注意:如果您的文件很大,在整个文件下载完成之前它看起来不会做任何事情,因此请确保向用户显示一些消息或一些指示,让他们知道它正在做某事
你不能在 JavaScript 中做到这一点。“保存到”对话框是由浏览器打开的,您无法通过 JS 访问它,它是操作系统的标准对话框。
在用户单击下载链接之前,您的服务器必须提供具有所需名称的文件。
您仍然想重命名下载的文件的原因是什么?