解决使用若依框架文件下载的问题
- 第一个问题:要下载的数据在数据库里面不存在,所以要将导入的数据筛选后重新导出
- 第二个问题:使用若依框架的导出框架进行导出时遇到无法导出文件的问题
- 第三个问题:若依框架的封装好的download需要传递json数据给后端,后端如何获取和处理
先上代码–前端:
//两个按钮
<el-button @click="ExportSucFail(1)">导出成功</el-button>
<el-button @click="ExportSucFail(2)">导出失败</el-button>
// 点击事件
function ExportSucFail(com) {
console.log(com)
if (com===1){
proxy.$modal.confirm('是否确认导出当前所选图书?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
console.log("aaa")
//return exportFail(trueList.value);
return proxy.download("/order/cart_item/exportFail", {list: JSON.stringify(trueList.value)}, `书目导出.xlsx`);
}).then(response => {
proxy.$modal.msgSuccess("导出成功");
}).catch(function() {
console.log("bbbb")
});
}else if (com===2){
proxy.$modal.confirm('是否确认导出当前所选图书?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return proxy.download("/order/cart_item/exportFail", {list: JSON.stringify(noExistList.value)}, `书目导出.xlsx`);
}).then(response => {
proxy.$modal.msgSuccess("导出成功");
}).catch(function() {});
}
}
后端
@PostMapping("/exportFail")
public void exportFail(HttpServletResponse response, @RequestParam("list") String list) {
List<DocBookInfo> listdail = JSONArray.parseArray(list, DocBookInfo.class);
ExcelUtil<DocBookInfo> util = new ExcelUtil<>(DocBookInfo.class);
util.exportExcel(response,listdail, "图书信息");
}
return proxy.download("/order/cart_item/exportFail", {list: JSON.stringify(noExistList.value)}, `书目导出.xlsx`);
这个代码是前端下载的接口,是若依封装好的download方法,位置在src/utils/request.js这个文件的download这个方法,他定义了请求头和下载文件返回流的数据格式,如果自己写后端调用接口的话需要定义请求头和文件传输格式,因为后端返回回来的文件流的格式(说白了就是一串乱码)
– 第二个问题是遇到了传输文件格式不对,前端传递的是JSON字符串,在后端就要重新转换为List格式,而不是直接使用List进行接收,我第一次就是直接用@RequestBody 进行接受的,所以会出现’Content-Type’: 'application/x-www-form-urlencoded’类似的异常。