关键点 :
1.blob的type设置成表格
var blob = new Blob([res.data],{type : 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})
2.请求header里面设置:responseType:'blob'
内容不乱码,在axios中加 responseType:'blob'(此处为自己封装的axios, 请勿复制 )
代码如下:<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=gbk" />
<title>JS实现下载文件</title>
<script language=JavaScript>
function download(obj){
if(document.all.ifrm==null){
objIframe=document.createElement("IFRAME")
document.body.insertBefore(objIframe)
objIframe.outerHTML="<iframe name=ifrm style='width:0hieght:0' src="+obj.href+"></iframe>"
re=setTimeout("download()",1)
}
else{
clearTimeout(re)
files=window.open(obj.href,"ifrm")
files.document.execCommand("SaveAs")
document.all.ifrm.removeNode(true)
}}
</script>
</head>
<body >
文档列表:请点出下载<br/>
<a href="file01.doc" id="filelist" onclick="download()return false" style="cursor:hand">文件1</a> <br/>
<a href="file02.pdf" id="filelist" onclick="download()return false" style="cursor:hand">文件2</a>
</body>
</html>