后端返回文件流前端下载处理

2,271 阅读1分钟

//**一、兼容IE**

function DownLoad(options) {
var config = $.extend(true, {method: 'post'}, options);
var $iframe = $('<iframe id="down-file-iframe" />');
var $form = $('<form target="down-file-iframe" method="' + config.method + '" />');
   $form.attr('action', config.url);
for (var key in config.data) {
    $form.append('<input type="hidden" name="' + key + '" value="' + config.data[key] + '" />');
    }
    $iframe.append($form);
    $(document.body).append($iframe);
   $form[0].submit();
   $iframe.remove();
}
   var	data = selectData;
  var url = **接口地址**;
   DownLoad({ url:url,data:data});
//**二、**
function request () {
    var req = new XMLHttpRequest();
    req.open('POST', **接口地址**, true);
    req.responseType = 'blob';
    req.setRequestHeader('Content-Type', 'application/json');
    req.onload = function() {
    var data = req.response;
    var a = document.createElement('a');
    var blob = new Blob([data]);
    var blobUrl = window.URL.createObjectURL(blob);
    download(blobUrl) ;
    };
    req.send(selectData);
};
function download(blobUrl) {
     var a = document.createElement('a');
     a.style.display = 'none';
     a.download = **文件名**;
     a.href = blobUrl;
     a.click();
     document.body.removeChild(a);
 }
 request();