当前位置: 首页 > news >正文

vue请求springboot接口下载zip文件

说明

其实只需要按照普通文件流下载即可,以下是一个例子,仅供参考。

springboot接口

@RestController
@RequestMapping("/api/files")
public class FileController {@GetMapping("/download")public ResponseEntity<Resource> downloadFile() throws IOException {// Assume the ZIP file is located in the resources folderFile file = new File("src/main/resources/sample.zip");InputStreamResource resource = new InputStreamResource(new FileInputStream(file));return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=sample.zip").contentType(MediaType.APPLICATION_OCTET_STREAM).contentLength(file.length()).body(resource);}
}
  • 或者是采用传统
@GetMapping(value = "/download")public void exportTasks(HttpServletResponse response) throws IOException {try {String filePath = "d:/tmp/aaa.zip";File file = new File(filePath);if (!file.exists()) {throw new FileNotFoundException("File not found: " + filePath);}String fileName = FilenameUtils.getName(filePath);// 对中文文件名进行编码String zipFileName = URLEncoder.encode(fileName, CharsetUtil.UTF_8);response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(zipFileName, "utf-8"));response.setContentType("application/octet-stream;charset=UTF-8");try (InputStream inputStream = new FileInputStream(file);OutputStream outputStream = response.getOutputStream()) {byte[] buffer = new byte[4096];int bytesRead;while ((bytesRead = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, bytesRead);}outputStream.flush();}} catch (Exception e) {log.error("下载出错", e);}}

vue调用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Download ZIP Example</title>
</head>
<body><div id="app"><button @click="downloadZip">Download ZIP</button></div><!-- 引入 Vue --><script src="https://cdn.jsdelivr.net/npm/vue@2"></script><!-- 引入 Axios --><script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script><script>new Vue({el: '#app',methods: {async downloadZip() {try {const response = await axios.get('http://localhost:8080/api/files/download', {responseType: 'blob', // 处理二进制数据});const url = window.URL.createObjectURL(new Blob([response.data]));const link = document.createElement('a');link.href = url;link.setAttribute('download', 'sample.zip'); // 下载的文件名document.body.appendChild(link);link.click();link.remove();} catch (error) {console.error('Error downloading the file:', error);}}}});</script>
</body>
</html>

执行效果

在这里插入图片描述

在这里插入图片描述

相关文章:

vue请求springboot接口下载zip文件

说明 其实只需要按照普通文件流下载即可&#xff0c;以下是一个例子&#xff0c;仅供参考。 springboot接口 RestController RequestMapping("/api/files") public class FileController {GetMapping("/download")public ResponseEntity<Resource>…...

PySide6||QPushButton的QSS样式

1、狗狗拜按钮 QQ202484-03338 (online-video-cutter.com) /* QPushButton的基本样式 */ QPushButton { background-image:url(:/xxx/第1帧.png); /* 设置背景图片 */ background-repeat: no-repeat; /* 不重复背景图片 */ background-position: center; /* 将背景图片居中…...

HarmonyOS鸿蒙应用开发之ArkTS基本语法

ArkTS&#xff08;Ark TypeScript&#xff09;是一种基于TypeScript的扩展语言&#xff0c;专为鸿蒙应用开发设计。它在保持TypeScript基本语法风格的基础上&#xff0c;对TypeScript的动态类型特性施加了更严格的约束&#xff0c;并引入了静态类型&#xff0c;以减少运行时开销…...

Web开发-CSS篇-上

CSS的发展历史 CSS&#xff08;层叠样式表&#xff09;最初由万维网联盟&#xff08;W3C&#xff09;于1996年发布。CSS1是最早的版本&#xff0c;它为网页设计提供了基本的样式功能&#xff0c;如字体、颜色和间距。随着互联网的发展&#xff0c;CSS也不断演进&#xff1a; C…...

在mac上通过 MySQL 安装包安装 MySQL 之后,终端执行 mysql 命令报错 command not found: mysql

在 mac 上通过 MySQL 安装包安装 MySQL 之后&#xff0c;如果在终端中运行 mysql 命令时遇到 command not found: mysql 错误&#xff0c;通常是因为 MySQL 的二进制文件没有被添加到系统的 PATH 环境变量中。 解决方法&#xff1a;手动添加 MySQL 到 PATH 环境变量 1.找到 M…...

Unity入门4——常用接口

C#中常用类和接口 DateTime&#xff1a;表示某个时刻 DateTime.Now&#xff1a;拿到系统当前时间DtaTime.TimeOfDay&#xff1a;获取此实例当天的时间 Quaternion&#xff1a;用来旋转&#xff0c;采用四元数&#xff0c;由w&#xff08;实部&#xff09;和x,y,z&#xff08;虚…...

职业教育云计算实验实训室建设应用案例

云计算作为信息技术领域的一次革命&#xff0c;正在深刻改变着我们的工作和生活方式。随着企业对云计算技术的依赖日益加深&#xff0c;对具备云计算技能的专业人才的需求也日益迫切。职业院校面临着培养符合行业标准的云计算人才的挑战。唯众凭借其在教育技术领域的专业经验&a…...

MySQL-MHA高可用配置及故障切换

目录 案例搭建 1&#xff1a;所有服务器关闭防火墙 2&#xff1a;设置hosts文件 3&#xff1a;安装 MySQL 数据库 4&#xff1a;修改参数 5&#xff1a;安装 MHA 软件 6&#xff1a;配置无密码认证 7&#xff1a;配置 MHA 8&#xff1a;模拟 master 故障 MHA(MasterHi…...

Sentinel 滑动时间窗口源码分析

前言&#xff1a; Sentinel 的一个重要功能就是限流&#xff0c;对于限流来说有多种的限流算法&#xff0c;比如滑动时间窗口算法、漏桶算法、令牌桶算法等&#xff0c;Sentinel 对这几种算法都有具体的实现&#xff0c;如果我们对某一个资源设置了一个流控规则&#xff0c;并…...

猎码安卓APP开发IDE,amix STUDIO中文java,HTML5开发工具

【无爱也能发电】Xili 2024/8/2 10:41:20 猎码安卓APP开发IDE,amix java开发工具 我研发这些只有一小部分理由是为了赚钱&#xff0c;更多是想成就牛逼的技术产品。 目前的产品就够我赚钱的&#xff0c;我持续更新就好了&#xff0c;没必要继续研究。 IDE不赚钱&#xff0c;谁…...

【Deep-ML系列】Linear Regression Using Gradient Descent(手写梯度下降)

题目链接&#xff1a;Deep-ML 这道题主要是要考虑矩阵乘法的维度&#xff0c;保证维度正确&#xff0c;就可以获得最终的theata import numpy as np def linear_regression_gradient_descent(X: np.ndarray, y: np.ndarray, alpha: float, iterations: int) -> np.ndarray:…...

NVIDIA A100 和 H100 硬件架构学习

目前位置NV各种架构代号&#xff1a; NVIDIA GPU 有多个代号和架构&#xff0c;这些架构对应不同的世代和硬件特性。以下是 NVIDIA 主要 GPU 架构及其计算能力&#xff08;Compute Capability&#xff09;代号的简要概述&#xff1a; Tesla 架构 G80、GT200 Compute Capabi…...

企业研发设计协同解决方案

新迪三维设计&#xff0c;20年深耕三维CAD 全球工业软件研发不可小觑的中国力量 2003-2014 年 新迪数字先后成为达 索SolidWorks、 ANSYS Spaceclaim、MSC等三维CAD/CAE 软件厂商的中国研发中心&#xff0c;深度参与国际 一流工业软件的研发过程&#xff0c;积累了丰富的 技术经…...

iOS 18(macOS 15)Vision 中新增的任意图片智能评分功能试玩

概述 在 WWDC 24 中库克“大厨”除了为 iOS 18 等平台重磅新增了 Apple Intelligence 以外&#xff0c;苹果也利用愈发成熟的机器学习引擎扩展了诸多内置框架&#xff0c;其中就包括 Vision。 想用本机人工智能自动为我们心仪的图片打一个“观赏分”吗&#xff1f;“如意如意&…...

如何实现若干子任务一损俱损--浅谈errgroup

errgroup 是 Go 语言官方扩展库 x/sync 中的一个包&#xff0c;它提供了一种方式来并行运行多个 goroutine&#xff0c;并在所有 goroutine 都完成时返回第一个发生的错误&#xff08;如果有的话&#xff09;。这对于需要并行处理多个任务并等待它们全部完成&#xff0c;同时需…...

并查集的基础题

## 洛谷p1196 绿 35m 点到祖先的距离 代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N3e510; int f[N],dist[N],num[N];//num计算祖先有多少儿子 &#xff0c;dist计算距离祖先有几个 int zx(int x){ if(f[x]x)return x;//x没爸爸 e…...

[论文翻译] LTAChecker:利用注意力时态网络基于 Dalvik 操作码序列的轻量级安卓恶意软件检测

LTAChecker: Lightweight Android Malware Detection Based on Dalvik Opcode Sequences using Attention Temporal Networks 摘要&#xff1a; Android 应用程序已成为黑客攻击的主要目标。安卓恶意软件检测是一项关键技术&#xff0c;对保障网络安全和阻止异常情况至关重要。…...

HTTPS链接建立的过程

HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;建立链接的过程主要是通过TLS&#xff08;Transport Layer Security&#xff09;协议来实现的。HTTPS的链接建立过程可以分为以下几个步骤&#xff1a; 1. **客户端发起请求** - 客户端向服务器发送一个请求&…...

文档控件DevExpress Office File API v24.1 - 支持基于Unix系统的打印

DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库&#xff0c;不用安装Microsoft Office&#xff0c;就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…...

IP地址封装类(InetAddress类)

文章目录 前言一、IP地址是什么&#xff1f;二、IP地址封装类 1.常用方法2.实操展示总结 前言 当我们想要获取到通信对方的IP地址、主机地址等信息时&#xff0c;我们可以使用InetAddress类。InetAddress类在java的net包中。 一、IP地址是什么&#xff1f; IP地址 (Internet Pr…...

电驱动系统标定视频精讲教程:4.5小时全解析,含文档重难点解析

电驱动系统标定 视频 精讲教程&#xff08;含文档&#xff09;&#xff0c;培训时长4.5小时。 电驱动重难点解析文档。深夜的实验室里示波器曲线还在跳动&#xff0c;我盯着屏幕上那个0.3秒的扭矩响应延迟&#xff0c;咖啡杯在控制台边沿留下深褐色的印记。电驱动标定工程师最…...

Chord视频理解工具实战教程:日志记录与分析过程可追溯性配置

Chord视频理解工具实战教程&#xff1a;日志记录与分析过程可追溯性配置 1. 工具概览与核心价值 Chord视频时空理解工具是一款基于Qwen2.5-VL架构开发的本地智能视频分析解决方案。这个工具专门解决视频内容深度理解的需求&#xff0c;能够对视频进行帧级特征提取和时序分析&…...

如何快速提升Windows性能:Win11Debloat一键优化指南

如何快速提升Windows性能&#xff1a;Win11Debloat一键优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cust…...

[具身智能-244]:OpenCV目标跟踪应用程序调用OpenCV库函数实现该功能的主要流程

OpenCV 目标跟踪应用程序的实现流程&#xff0c;本质上是“初始化&#xff08;定义目标&#xff09; -> 循环更新&#xff08;预测位置&#xff09; -> 可视化&#xff08;反馈结果&#xff09;”的过程。这一流程完美体现了之前提到的“逻辑推演模式”&#xff1a;程序员…...

VS2022下载与全面使用指南

Visual Studio 2022&#xff08;简称VS2022&#xff09;是微软推出的最新一代集成开发环境&#xff08;IDE&#xff09;&#xff0c;于2021年11月正式发布&#xff0c;相比上一代VS2019&#xff0c;在性能优化、功能迭代、兼容性提升等方面实现了全方位升级&#xff0c;被誉为“…...

MiniCPM-V-2_6效果展示:多图推理、视频理解、强大OCR,免费本地运行真香

MiniCPM-V-2_6效果展示&#xff1a;多图推理、视频理解、强大OCR&#xff0c;免费本地运行真香 1. 惊艳开场&#xff1a;8B小身材&#xff0c;多模态大能量 当我第一次在自己的笔记本上运行MiniCPM-V-2_6时&#xff0c;完全被这个仅有8B参数的"小模型"震撼到了。它…...

3步掌握Fooocus核心架构:从零构建专业级AI图像生成工作流

3步掌握Fooocus核心架构&#xff1a;从零构建专业级AI图像生成工作流 【免费下载链接】Fooocus Focus on prompting and generating 项目地址: https://gitcode.com/GitHub_Trending/fo/Fooocus Fooocus作为基于Stable Diffusion XL架构的开源AI图像生成软件&#xff0c…...

Docker网络扫盲:除了host.docker.internal,还有哪些方法能让Dify容器访问宿主机的服务?

Docker容器与宿主机通信的5种实战方案及选型指南 当你第一次在Docker容器里尝试连接宿主机上的MySQL或Redis服务时&#xff0c;那个经典的"Connection refused"错误可能会让你困惑不已。为什么明明在宿主机上运行得好好的服务&#xff0c;到了容器里用localhost就访问…...

Palworld存档工具:高效解决游戏存档格式转换与数据解析的技术方案

Palworld存档工具&#xff1a;高效解决游戏存档格式转换与数据解析的技术方案 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools Palworld存档工具是…...

2025最权威的五大AI科研网站解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 毕业论文写作领域里人工智能技术的应用&#xff0c;带来了好多积极影响&#xff0c;明显提高…...