开发喵星球

若依解决导出时下载插件异常的方法(343)

导出文件的流程通常是创建一个临时文件,待前端下载请求完成后立即删除。然而,一些下载插件(如迅雷)会进行二次下载,此时文件已被删除,从而导致异常,无法找到文件。
– 解决方案:如有强制要求,可以将所有导出操作修改为流式返回给前端,避免使用临时文件。

一、默认的 POST 请求,生成临时文件

@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");
}

二、修改导出文件的 Java 代码与 ry-ui.js 的通用导出方法

// 使用流返回给前端
@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);
    });
}
   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-09-26 11:53:14 阅读量:80
<<   >>


powered by kaifamiao