最近项目中有一个导出word文件下载的功能需求,前台post请求后台php返回word文件,传到前台,发现直接用ajax并不能导出,于是查阅资料,最后用的是XMLHttpRequest方法实现,话不多说,以下为实现代码:
//创建请求
function xmlrequest () {
var xmlreq = new XMLHttpRequest();
xmlreq.open('post', '请求地址', true);
xmlreq.responseType = 'blob';
xmlreq.setRequestHeader('Content-Type', 'application/json');
xmlreq.onload = function() {
var data = req.response;
var blob = new Blob([data]);
var blobUrl = window.URL.createObjectURL(blob);
download(blobUrl,xmlreq) ;
};
xmlreq.send(form);
};
//得到a标签并赋值href点击下载
function download(blobUrl,xmlreq) {
var a = document.getElementById('linka');
//得到后台传到前台的文件名
var filename = xmlreq.getResponseHeader("content-disposition");
if(filename){
a.download = filename.match(/filename="(\S*)"/)[1];
}else{
a.download = "word.docx"
}
a.href = blobUrl;
a.click();
}
//执行请求
xmlrequest ()
|