1、后端代码编写
查找文件所放位置
File file = new File(ResourceUtils.getURL("classpath:").getPath());
File templateFile = new File(file, "/static/xls/manageSituationSubTemplate.xls");
文件存放位置
//有跨域的问题,设置成前端访问地址
response.setHeader("Access-Control-Allow-Origin", "http://localhost:3000");
//maven编译会破坏模板,所以要设置下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>xls</nonFilteredFileExtension>
<nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
2、前端编码
handleExport() {
downFile(this.url.exportTemplate).then((data) => {
var title = "111111111";
if (!data || data.size===0) {
this.$message.warning('文件下载失败')
return
}
if (typeof window.navigator.msSaveBlob !== 'undefined') {
window.navigator.msSaveBlob(new Blob([data]), title + '.xls')
} else {
let url = window.URL.createObjectURL(new Blob([data]))
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', title + '.xls')
document.body.appendChild(link)
link.click()
document.body.removeChild(link) //下载完成移除元素
window.URL.revokeObjectURL(url) //释放掉blob对象
}
})
},
注:文件获取存在不适应问题,当打包成jar包时就会提示文件找不到,更改写法。如果大家有这样问题可以试下以下写法
//File file = new File(ResourceUtils.getURL("classpath:").getPath()); //File templateFile = new File(file, "/static/xls/manageSituationSubTemplate.xls"); ClassPathResource classPathResource = new ClassPathResource("/static/xls/manageSituationSubTemplate.xls"); InputStream is = classPathResource.getInputStream();