导出文件的逻辑是先创建一个临时文件,等待前端请求下载结束后马上删除这个临时文件。但是有些下载插件,例如迅雷(他们是二次下载),这个时候文件已经删除,会导致异常,找不到文件。
– 解决方案:如果有硬性要求话,可以把所有的导出都改成流的形式返回给前端,不采用临时文件的方法。
@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