post下载文件到本地-兼容ie

Posted dshvv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了post下载文件到本地-兼容ie相关的知识,希望对你有一定的参考价值。

一般下载都是给一个下载文件地址
然后前端拿到这个绝对路径
a链接打开就是下载是吧

但是有些后端,偏偏就是用post接口,返回一个二进制文件流
可能这样不用写入本地(服务器)吧。
不用清理管理和维护
技术图片
技术图片

 

 

 解决办法

// 导出excel
  function postExcelFile(data, url) {
    var form = document.createElement(‘form‘); //创建form标签
    form.setAttribute("style","display:none");
    form.setAttribute("method","post");//设置请求方式
    var exportData = ‘‘  //设置发送后台数据
    for(var key in data){
      if(data.hasOwnProperty(key)){
        if (data[key]) {
          exportData += key + ‘=‘ + data[key] + ‘&‘
        }
      }
    }
    form.setAttribute("action",baseUrl+url+"?"+exportData); //action属性设置请求路径
    document.body.appendChild(form); //页面添加form标签
    
    var input1 = document.createElement("input") //创建input标签
    input1.setAttribute("type","hidden") //设置隐藏域
    
    form.appendChild(input1);
    form.submit();//表单提交即可下载!
    document.body.removeChild(form); //页面删除form标签
  }

/**
   * 点击导出按钮
   * @param obj 导出的数据
   */
  $(‘.export‘).click(function(e) {
     postExcelFile(param,exportUrl); //param为from Data格式的参数,exportUrl为请求地址
  }        

 

 

ie8是支持的,现代浏览器就更不用说了

技术图片

 

 



以上是关于post下载文件到本地-兼容ie的主要内容,如果未能解决你的问题,请参考以下文章

兼容ie8,firefox,chrome浏览器的代码片段

vue下载excel兼容360,QQ,IE10,IE11浏览器

通过Url Protocol实现web调用本地exe,兼容谷歌IE,并实现本地验证

根据图片的url地址下载图片到本地保存代码片段

angularjs 中ie兼容性的问题收集

文件下载的ie11兼容性优化