下面是我给大家整理的js下载文件流的简单操作,有兴趣的同学可以去看看。
下载的代码如下:
var xhr = new xmlhttprequest();
var formdata = new formdata();
formdata.append('snnumber', $("#snnumber").val());
formdata.append('spec', $("#spec").val());
formdata.append('startcreatedate', $("#startcreatedate").val());
formdata.append('endcreatedate', $("#endcreatedate").val());
formdata.append('startactivedate', $("#startactivedate").val());
formdata.append('endactivedate', $("#endactivedate").val());
formdata.append('supplier', $("#supplier").val());
formdata.append('state', $("#cbodevicestatus").val());
xhr.open('post', vpms.ajaxurl + vpms.manageuserurl + "exportexceldevices", true);
xhr.setrequestheader("accesstoken", userinfo.accesstoken);
xhr.responsetype = 'blob';
xhr.onload = function (e) {
if (this.status == 200) {
var blob = this.response;
var filename = "设备导出{0}.xlsx".format(vpms.core.date.format("yyyymmddhhmmss"));
var a = document.createelement('a');
blob.type = "application/excel";
var url = createobjecturl(blob);
a.href = url;
a.download = filename;
a.click();
window.url.revokeobjecturl(url);
}
};
xhr.send(formdata);
});
使用chrome下载运行良好,可ie explorer 11版本导出excel按钮无反应或者弹出"需要新应用打开此blob".
改进下blob的处理方式:如下
if (window.navigator.mssaveoropenblob) {
navigator.mssaveblob(blob, filename);
} else {
var a = document.createelement('a');
blob.type = "application/excel";
var url = createobjecturl(blob);
a.href = url;
a.download = filename;
a.click();
window.url.revokeobjecturl(url);
}
此时ie下导出正常:
上面是我整理给大家的js下载文件流的简单操作,希望今后会对大家有帮助。
相关文章:
在js中生成验证码并验证(含有代码,简单粗暴,包教包会)
有关在js 获取json数据简单调用(代码附上,简单粗暴)
利用js使用post方式提交请求的方法(结合代码详细解答)
以上就是js下载文件流的简单操作(附上代码)的详细内容。