js导出

1、 第一种,后台服务器有静态资源且是固定的文件名(GET方式下载文件)
window.location.href="http://www.域名/template.xlsx(文件名)"
2、第二种,后台返回文件流
解决办法一:本地可测试;推荐使用;
第一步:引入axios第三方库
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
第二步:传参、调接口,下载文件
axios.post(请求路径URL, {参数Params}, {
            responseType: 'blob'
          }).then(function(res){
            var blob = res.data;
           // FileReader主要用于将文件内容读入内存
            var reader = new FileReader();
            reader.readAsDataURL(blob);
            // onload当读取操作成功完成时调用
            reader.onload = function(e) {
              var a = document.createElement('a');
              // 获取文件名fileName
              var fileName = res.headers["content-disposition"].split("=");
              fileName = fileName[fileName.length - 1];
              fileName = fileName.replace(/"/g, "");
              a.download = fileName;
              a.href = e.target.result;
              document.body.appendChild(a);
              a.click();
              document.body.removeChild(a);
            }
          });
解决办法二:form表单提交,本地不可测试;不推荐使用;
var exportForm = $('<form action="/api/cert/download" method="post">\
        <input type="hidden" name="ids" value="'+参数ids值+'"/>\
        </form>');
       $(document.body).append(exportForm);
       exportForm.submit();
       exportForm.remove();

https://www.cnblogs.com/zero-zm/p/12366955.html

posted @ 2020-10-16 09:35  ThisCall  阅读(188)  评论(0编辑  收藏  举报