jQuery实现前端下载功能

devtools/2024/10/15 22:27:13/

js实现前端下载功能

前端代码

html代码

javascript"><div class="div_button_btn_span"><a href="#" class="easyui-linkbutton" iconCls="icon-ok" onclick="exportExcel()" plain="true">导出明细</a>
</div>

js代码

javascript">function exportExcel() {// 定义要发送的参数let postData = $("#searchForm").serializeObject();// 发送 POST 请求fetch('${ctxPO}/url/PosInvoiceUrlController/exportPosInvoice', {method: 'POST',body: JSON.stringify(postData),headers: {'Content-Type': 'application/json'}}).then(response => response.blob()).then(blob => {const url = URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.download = '供应商发票.xlsx';document.body.appendChild(link);link.click();document.body.removeChild(link);});}

如果需需要则个名称期望是从后端获取的,可以从Content-disposition中获取

服务端代码

javascript">/*** 导出发票数据* @param condition 条件* @param response 响应*/@RequestMapping("exportPosInvoice")public void exportPosInvoice(PosInvoiceListQueryCondition condition, HttpServletResponse response){try {Workbook workbook = posInvoiceService.createExportPosInvoiceExcel(condition);/****************Excle表格渲染完成后,开始返回流数据*****************//**设置头信息*/response.setCharacterEncoding("UTF-8");response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");/**一定要设置成xlsx格式*/response.setHeader("Content-disposition", "attachment;filename=供应商发票.xlsx");/**创建一个输出流*/ServletOutputStream outputStream = response.getOutputStream();/**写入数据*/workbook.write(outputStream);/**关闭流*/outputStream.close();} catch (IOException e) {e.printStackTrace();}}

其中 Workbook workbook = posInvoiceService.createExportPosInvoiceExcel(condition)是生成excel代码,此处不过多罗列了

如果是文件URL的无需后端生成的,可以直接参考以下代码

javascript"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>File Download</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body><button id="downloadBtn">Download File</button><script>
$(document).ready(function() {$('#downloadBtn').click(function() {var fileUrl = 'path/to/your/file.pdf'; // 替换为实际文件路径downloadFile(fileUrl);});function downloadFile(fileUrl) {// 创建一个隐藏的<a>标签var link = document.createElement('a');link.href = fileUrl;link.download = fileUrl.substr(fileUrl.lastIndexOf('/') + 1); // 设置下载文件的名称link.style.display = 'none';document.body.appendChild(link);// 模拟点击<a>标签来触发文件下载link.click();// 清理document.body.removeChild(link);}
});
</script></body>
</html>

如果是直接从下载文件,需要注意跨域问题


http://www.ppmy.cn/devtools/102931.html

相关文章

基于Spring Boot的陶瓷文化网站的设计与实现

毕业设计&#xff08;论文&#xff09; 论文题目&#xff1a;基于Spring Boot的陶瓷文化网站的设计与实现 博主可接毕设论文&#xff01;&#xff01;&#xff01; 摘 要 中国悠久的陶瓷艺术&#xff0c;作为民族文化遗产的重要载体&#xff0c;历经时代的洗礼&#xff0c;其…

数据库管理-第236期 数据库一体机的价值(20240829)

数据库管理236期 2024-08-29 数据库管理-第236期 数据库一体机的价值&#xff08;20240829&#xff09;1 误区2 硬件3 操作系统4 数据库总结 数据库管理-第236期 数据库一体机的价值&#xff08;20240829&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff…

EXCEL试题

EXCEL试题 Excel 是__C__. A.数据库管理软件 B.文字处理软件 C.电子表格软件 D.幻灯片制作软件Excel工作簿文件的默认扩展名为__B__. A.doc B.xls C.ppt D.mdb在Excel 的操作界面中,整个编辑栏被分为左、中、右三个部分,左面部分显示 出,C A.活动单元格的行号 B.活动单元格的…

21:【stm32】定时器二:输入捕获

输出捕获 1、输出捕获的简介2、输入捕获原理2.1、输入滤波2.2、信号选择2.3、CCx事件和CCx中断 3、标准库编程 1、输出捕获的简介 定时器通过通道捕获输入电平的变化&#xff0c;而通道有CH1~CH4&#xff0c;这4个通道。 我们设定对通道CH3的输入电平进行捕获。假如CH3突然捕获…

YAPI接口平台中对于接口的详细配置步骤

完整笔记指路&#xff1a;黑马JavaWeb开发笔记07——Ajax、Axios请求、前后端分离开发介绍、Yapi详细配置步骤 注意&#xff1a;我进去看了一下&#xff0c;这个网站非常不稳定&#xff0c;非常卡顿&#xff0c;并且很多人反映无法注册&#xff0c;推测需要魔法。我用Google账…

一文搞懂 js 原型和原型链

文章目录 一、前言二、原型2.1 概念2.2 获取原型的方法2.2.1 __proto__获取方式2.2.2 通过构造函数prototype 属性获取2.2.2 ES6 class 通过Object.getPrototypeOf()获取类原型 2.3 通过原型实现继承2.4 原型的作用 三、 原型链四、ES6实现继承五、综述 一、前言 原型和原型链…

manim动画:利用极限的定义证明极限。

函数的证明 用极限的定义来证明下面的极限。 要用极限的定义证明 &#xff0c;我们可以使用极限的定义&#xff1a; 设f(x)在包含a的开区间中对所有x≠a有定义&#xff0c;设L为实数。然后 如果&#xff0c;任意一个&#xff0c;存在一个 &#xff0c;以至于如果对于所有x在f的…

.NET_web前端框架_layui_栅格布局

基础概念 layui:用于简化前端编写的框架。响应式布局&#xff08;Responsive Layout&#xff09;:一种网页设计方法&#xff0c;使网页能够根据不同设备的屏幕尺寸和分辨率自动调整其内容和布局。栅格布局&#xff08;Grid Layout&#xff09;:一种网页设计布局方法&#xff0c…