每一个你不满意的现在,都有一个你不努力的曾经. 网站首页 > js
Js word格式doc文件下载
发布时间:2023-07-06 16:21:09 修改时间:2023-07-06 16:21:09 阅读:1145 评论:0 0
- 通过a标签做点击操作
- Window.location.href = url下载
- Window.open(url)下载
- 文件流获取转换blob对象模拟a标签点击下载
- Axios Api请求如下:
response数据如下:
获取数据并模拟a标签点击:
- 设置字符集和文件后缀名
- 设置文件名称,这里encode必须设置,前端decodeURI解析,否则中文乱码
- 设置response字符集
- Ajax请求api中的response类型必须添加(因为response回传不存在blob类型,默认字符串,会导致下载的文件无法解析)
- blob获取需要标注文件类型
- 获取文件名字,用decodeURI解码
一、 下载方式
a) 获取后端传过来的url 静态资源
b) 文件流下载(application/json; application/octet-stream)
二、 下载doc文件流示例
a) 后端主要代码
b) 前端主要代码
export const reportDownload = row => { return request({ url: '/api/diagnose/download/'+ row.id + '/' + row.filetype , method: 'get', responseType: "blob", headers: { 'Content-Type': 'application/json; application/octet-stream' }, data: row }) };
const blob = new Blob([res.request.response], {type: 'application/msword'}); const fileName = decodeURI(res.headers['content-disposition'].split('=')[1]) +".doc"; if ("download" in document.createElement("a")) { // 非IE下载 const elink = document.createElement("a"); elink.download = fileName; elink.style.display = "none"; elink.href = URL.createObjectURL(blob); document.body.appendChild(elink); elink.click(); URL.revokeObjectURL(elink.href); // 释放URL 对象 document.body.removeChild(elink); } else { // IE10+下载 navigator.msSaveBlob(blob, fileName); }
三、 文件流下载关键点说明
a) 后端
response.setContentType("application/msword;" + "charset = UTF-8");
response.setHeader("Content-Disposition", "attachment;
filename=" + java.net.URLEncoder.encode(diagnoseReport.getName(), "UTF-8"));
response.setCharacterEncoding("UTF-8");
b) 前端
responseType: "blob"
new Blob([res.request.response], {type: 'application/msword'});
decodeURI(res.headers['content-disposition'].split('=')[1]) +".doc";
回复列表
关键字词:span,style,font-size,1px,li,nbsp
上一篇:css常用属性