前端引入
// 放在内部工具类中不便提取
export function downloadFile(obj, name, suffix) {
const url = window.URL.createObjectURL(new Blob([obj]))
const fileName = parseTime(new Date()) + '-' + name + '.' + suffix
if ('download' in document.createElement('a')) {
// 反对a标签download的浏览器
const link = document.createElement('a') // 创立a标签
link.download = fileName // a标签增加属性
link.style.display = 'none'
link.href = url
document.body.appendChild(link)
link.click() // 执行下载
URL.revokeObjectURL(link.href) // 开释url
document.body.removeChild(link) // 开释标签
} else {
// 其余浏览器
navigator.msSaveBlob(new Blob([obj]), fileName)
}
}
后端
@Override
public void download(List<GroupDto> queryAll, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (GroupDto groupDto : queryAll) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("组名", groupDto.getName());
map.put("创立工夫", groupDto.getCreatedAt());
map.put("更新工夫", groupDto.getUpdatedAt());
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
// 工具类
public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx";
File file = new File(tempPath);
BigExcelWriter writer = ExcelUtil.getBigWriter(file);
// 一次性写出内容,应用默认款式,强制输入题目
writer.write(list, true);
SXSSFSheet sheet = (SXSSFSheet)writer.getSheet();
//下面须要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing办法
sheet.trackAllColumnsForAutoSizing();
//列宽自适应
writer.autoSizeColumnAll();
//response为HttpServletResponse对象
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=file.xlsx");
ServletOutputStream out = response.getOutputStream();
// 终止后删除临时文件
file.deleteOnExit();
writer.flush(out, true);
//此处记得敞开输入Servlet流
IoUtil.close(out);
}
火狐浏览器下载时如何敞开提醒如何解决文件
进去首先项配置
path:进入about:config
输出save查问以后首先响配置 增加一个配置信息
browser.helperApps.neverAsk.saveToDisk
application/octet-stream 申请类型
在火狐设置外面关上总是询问,即可每次提醒保留地位
发表回复