微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Vuejs 中使用 axios 获取下载文件 (.xlsx)?

如何解决如何在 Vuejs 中使用 axios 获取下载文件 (.xlsx)?

我正在尝试从 Rails 6 中的服务器发送一个 .xlsx(使用“caxlsx”gem 来生成文件)到在 Vuejs 中制作的客户端。

这是我的后端控制器

  def export_data
    respond_to do |format|
      format.xlsx {render xlsx: 'export_data',filename: "data-people-"+Time.Now.strftime("%-d %b %Y")+'.xlsx',disposition: "inline" }
    end
  end

这是我从前面打来的

axios
  .get("/people/export_data.xlsx",{params:{
      filter_unit: this.filter_unit,}},{
      responseType: 'blob',headers: { 'Accept': 'application/vnd.ms-excel' }
   }).then((response) => {
      const url = window.URL.createObjectURL(new Blob([response.data]));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download','file.xlsx');
      document.body.appendChild(link);
      link.click();
      this.isLoading = false
   });

这会为我生成一个下载对话框,但我可以下载的文件已损坏。另一方面,如果我直接在浏览器中插入控制器路径,文件就会正确下载,所以我认为问题不在后端,除非我不明白。

我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。