开发喵星球

若依如何解决导出使用下载插件出现异常(七十五)

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

一、默认的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 作者:无限繁荣, 吴蓉 发表于:2023-12-18 20:59:10 阅读量:94
<<   >>


powered by kaifamiao