Javascript在下载时重命名文件

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)


Ste*_*ves 7

您可以在链接标签上使用下载属性 <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)

注意:如果您的文件很大,在整个文件下载完成之前它看起来不会做任何事情,因此请确保向用户显示一些消息或一些指示,让他们知道它正在做某事


Mic*_*ino 0

你不能在 JavaScript 中做到这一点。“保存到”对话框是由浏览器打开的,您无法通过 JS 访问它,它是操作系统的标准对话框。

在用户单击下载链接之前,您的服务器必须提供具有所需名称的文件。

您仍然想重命名下载的文件的原因是什么?