导出文件的流程通常是创建一个临时文件,待前端下载请求完成后立即删除。然而,一些下载插件(如迅雷)会进行二次下载,此时文件已被删除,从而导致异常,无法找到文件。
– 解决方案:如有强制要求,可以将所有导出操作修改为流式返回给前端,避免使用临时文件。
@PostMapping("/export")
@ResponseBody
public AjaxResult export(Xxxx xxxx) {
List<Xxxx> list = xxxxService.selectXxxxList(xxxx);
ExcelUtil<Xxxx> util = new ExcelUtil<Xxxx>(Xxxx.class);
return util.exportExcel(list, "xxxx");
}
// 使用流返回给前端
@GetMapping("/export")
@ResponseBody
public void export(HttpServletResponse response, Xxxx xxxx) throws IOException {
List<Xxxx> list = xxxxService.selectXxxxList(xxxx);
ExcelUtil<Xxxx> util = new ExcelUtil<Xxxx>(Xxxx.class);
util.exportExcel(response, list, "xxxx");
}
// 修改 ry-ui.js 使导出数据为 GET 请求
exportExcel: function(formId) {
table.set();
.modal.confirm("确定导出所有" + table.options.modalName + "吗?", function() {
var currentId =.common.isEmpty(formId) ? ('form').attr('id') : formId;
var params =("#" + table.options.id).bootstrapTable('getOptions');
var dataParam = ("#" + currentId).serializeArray();
dataParam.push({ "name": "orderByColumn", "value": params.sortName });
dataParam.push({ "name": "isAsc", "value": params.sortOrder });
window.location.href = table.options.exportUrl + "?" +.param(dataParam);
});
}
powered by kaifamiao