前端如何处理后端回传的文件流并下载

后端返回的文件流,如果get请求,浏览器直接打开是直接下载的。
但通过POST 请求的话没办法处理,请问一下有大神遇到过需要前端进行文件转换的下载的情况吗?
image.png### 问题描述

阅读 14k
7 个回答

前些天刚好碰到这个问题。我解决问题的方法如下:

     $.ajax({
              url:'url',
              async:true,
              contentType:'application/x-www-form-urlencoded',
              data:{参数},
              xhr:function(){
                var xhr = new XMLHttpRequest();
                xhr.responseType = 'arraybuffer';
                return xhr;
              },
              type:'POST',
              timeout:60000,
              success:function(result){
                var blob = new Blob([result], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"}),
                Temp = document.createElement("a");
                Temp.href = window.URL.createObjectURL(blob);
                Temp.download =new Date().getTime()+'excel'
                $('body').append(Temp);
                Temp.click();
            },
  1. 把你的请求转换成一个 <form method="POST" target="_blank">action 指向 API
  2. 把参数当成表单参数
  3. 提交表单,这时浏览器会向目标 API 发起 POST 请求,并传递所有参数
  4. 后端返回的 HTTP header 里增加 Content-Disposition: attachment; filename="filename.ext"
  5. 完成

<a href="后端文件下载接口地址" >下载文件</a>
新手上路,请多包涵

接口正常,但是导出后文件乱码 请问楼主有遇到吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题