首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axios下载文件,原右扩展名

Axios下载文件,原右扩展名
EN

Stack Overflow用户
提问于 2020-11-21 10:18:56
回答 2查看 2.2K关注 0票数 2

下面是vuex下载文件的方法:

代码语言:javascript
复制
   downloadFile(context, url) {
      return new promise((resolve, reject) => {
        const method = "GET";
        axios
          .request({
            url: url,
            method,
            responseType: "blob"
          })
          .then(response => {
            let fileURL = window.URL.createObjectURL(
              new Blob([response.data]),
              {
                type: response.headers["content-type"]
              }
            );
            let fileLink = document.createElement("a");
            fileLink.href = fileURL;
            let fileName = response.headers["content-disposition"].split(
              "filename="
            )[1];
         
            fileLink.setAttribute("download", fileName);
            document.body.appendChild(fileLink);

            fileLink.click();
            fileLink.remove();
            resolve();
          })
          .catch(() => {
            reject();
          });
      });
    }

我传递URL链接(从laravel获得)

区块报价

文件总是以txt扩展名下载的问题

区块报价

有任何方法来获取文件扩展名?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-21 11:10:08

您的服务器没有在屏幕截图中发送文件扩展名。如果它不在downloadFileurl参数中,并且您无法修复服务器响应来包含它,您可以从Content-Type推断它,您可以创建一个散列将每个内容类型链接到一个扩展。

删除以下内容:

代码语言:javascript
复制
let fileName = response.headers["content-disposition"].split(
   "filename="
)[1];

将其替换为捕获扩展:

代码语言:javascript
复制
const extensions = {
  'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
  'application/fake': 'fake', // Just an example
  // etc. Add another line for every Content-Type
}
const contentType = response.headers["Content-Type"];
const extension = extensions[contentType];
const filename = 'file.' + extension;

这将命名每一个文件“文件”。

票数 2
EN

Stack Overflow用户

发布于 2020-11-21 10:26:28

如果端点没有提供扩展,则可以将其添加到fileName中。所以可能是:

代码语言:javascript
复制
-  fileLink.setAttribute("download", fileName);
+  const extention = 'pdf'; // example
+  fileLink.setAttribute("download", `${fileName}.${extention}`);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64941975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档