通常下载一个文件
window.location.href = '文件'
就能实现下载一个文件的需求。
但是如果遇到一些特殊的需求,比如说需要在请求头重加一些属性和值,这样window.location.href就不能满足了。但是可以用angularJS自带的$http来请求,并处理应答数据即可:
$http({ url: '/demo/queryFile.json', method: "GET",//接口方法 params: { //接口参数 }, headers: { 'Content-type': 'application/json' }, responseType: 'arraybuffer' //重点属性,必须设置 }).success(function (data, status, headers, config) { var blob = new Blob([data], {type: "application/vnd.ms-excel"}); //这里的格式 var objectUrl = URL.createObjectURL(blob); //利用浏览器打开URL实现下载 var a = document.createElement('a'); document.body.appendChild(a); a.setAttribute('style', 'display:none'); a.setAttribute('href', objectUrl); var filename="充值记录.xls"; a.setAttribute('download', filename); a.click(); //触发点击,下载文件 URL.revokeObjectURL(objectUrl); }).error(function (data, status, headers, config) { });
接下来画一下重点:
1.responseType: 'arraybuffer'/'blob',这个属性一定要添加上,不然返回数据类型会出错。
2.var blob = new Blob([data], {type: "application/vnd.ms-excel"});
导出文件的格式如下:
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8 application/vnd.ms-excel
按需设置type
转自:https://blog.csdn.net/qq_34527715/article/details/74285039