java
@ApiOperation("word导出")
@RequestMapping(value = "/exportWord")
public void exprotWord(@RequestParam String id, HttpServletRequest request,
HttpServletResponse response) {
// 数据库查富文本数据
String content = this.richTextService.getById(id).getContent();
String richText = "<html><body>" + content + "</body></html>";
try {
//设置编码
byte b[] = richText.getBytes("GBK");
ByteArrayInputStream bais = new ByteArrayInputStream(b);
POIFSFileSystem poifs = new POIFSFileSystem();
// ##############下面这两个不能删掉
DirectoryEntry directory = poifs.getRoot();
DocumentEntry documentEntry = directory.createDocument("WordDocument", bais);
//################这两个不能删掉
//输出文件
String name = "测试";
response.reset();
response.setHeader("Content-Disposition",
"attachment;filename=" +
new String(name.getBytes("GB2312"), "iso-8859-1") + ".doc");
response.setContentType("application/msword");
OutputStream ostream = response.getOutputStream();
//输出到本地文件的话,new一个文件流
// FileOutputStream ostream = new FileOutputStream("E:\\桌面\\测试.doc");
poifs.writeFilesystem(ostream);
bais.close();
ostream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
js实现下载word
/*
export function downFile(url,parameter){
return axios({
url: url,
params: parameter,
method:'get' ,
responseType: 'blob'
})
}
*/
handleSubmit(e) {
var fileName = "群体性事件"
var param = {"id":"2"}
//downFile就是封装了axios
downFile(this.url.exportWord, param).then((res) => {
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([res], {
type: 'application/msword'
}), fileName + '.doc')
} else {
let url = window.URL.createObjectURL(new Blob([res], {
type: 'application/msword'
}))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
//这是下载的文件名
link.setAttribute('download', fileName + '.doc')
document.body.appendChild(link)
link.click()
document.body.removeChild(link); //下载完成移除元素
window.URL.revokeObjectURL(url); //释放掉blob对象
}
}).catch((err) => {
console.log(err)
})
}