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

02_学习使用javax_ws_rs_下载文件

文章目录

  • 1 前言
  • 2 Maven 依赖
  • 3 下载接口
  • 4 如何返回文件?
  • 5 感谢

1 前言

  专栏上一篇,写了如何使用 javax.ws.rs 上传文件,那么必然的,我们得再学习学习如何下载文件😀

2 Maven 依赖

  这个就不赘述了,和上一篇,文件上传的 Maven 依赖一样。

3 下载接口

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;@Path("/test")
public interface TestController {@GET@Path("download")@Consumes(MediaType.APPLICATION_FORM_URLENCODED)Response download(@QueryParam("paramOne") String paramOne,@QueryParam("paramTwo") String paramTwo);
}

4 如何返回文件?

import org.springframework.util.Assert;
import javax.ws.rs.core.Response;public class TestService {public Response download(String paramOne, String paramTwo) {try {Assert.hasText(paramOne, "paramOne 不能为空");Assert.hasText(paramTwo, "paramTwo 不能为空");// 具体的业务逻辑, 产生了个文件File file = doSomethingThenGetAFile();String fileName = "text测试文件.txt";// URL 编码, 因为有中文this.urlEncodeFilename(fileName);return Response.ok().entity(file).header("Content-disposition", "attachment;filename*=utf-8''" + fileName).header("Content-Type", "text/plain").encoding("utf-8").build();} catch (Exception e) {logger.error("下载文件出现异常", e);return Response.ok().entity(JsonResult.fail(e.getMessage())).header("Content-Type", "application/json").encoding("utf-8").build();}}/*** 对 filename 进行 URL 编码** @param filename 文件名* @return 编码后的文件名*/public String urlEncodeFilename(String filename) {try {return URLEncoder.encode(filename, StandardCharsets.UTF_8.name());} catch (UnsupportedEncodingException e) {log.error("对文件名 {}, 进行 URL 编码时, 出现异常 {}", filename, e.getMessage());throw new RuntimeException("对文件名 " + filename + ", 进行 URL 编码时, 出现异常", e);}}
}

5 感谢

  感谢阅读~ 如有错误之处,请帮忙指正~

相关文章:

02_学习使用javax_ws_rs_下载文件

文章目录 1 前言2 Maven 依赖3 下载接口4 如何返回文件?5 感谢 1 前言 专栏上一篇,写了如何使用 javax.ws.rs 上传文件,那么必然的,我们得再学习学习如何下载文件😀 2 Maven 依赖 这个就不赘述了,和上一篇…...

js校验多个时间段的时间是否有交叉

参考博客: Java日期时间API系列37-----时间段是否有重叠(交集)的计算方法 Java 最优雅方式校验时间段重叠 判断是否有交叉数据 let timePeriod [{start: dateList[0].value, //时间段1的开始时间 时间格式为1130(代表11&#xf…...

Python Spyder开发的应用项目

Python是一种功能强大且受欢迎的编程语言,被广泛应用于科学计算、数据分析和机器学习等领域。而Spyder则是一款专为科学计算和数据分析而设计的Python集成开发环境(IDE)。本文将介绍Spyder的特点、功能以及如何使用。 特点 Spyder具有以下主…...

ES6知识点

ES6 知识点及常考面试题 var、let 及 const 区别 涉及面试题:什么是提升?什么是暂时性死区?var、let 及 const 区别?对于这个问题,我们应该先来了解提升(hoisting)这个概念。 console.log(a)…...

数据结构详解各种算法

1、设有两个整型顺序表L1,L2,其元素值递增有序存放,请定义该顺序表的元素类型及表类型,设计以下自定义函数: (1)录入顺序表中所有元素的值。 (2)将顺序表L1,L2合并为到…...

Qt实现右键菜单

一、实现方法 QWidget提供了虚函数: virtual void contextMenuEvent(QContextMenuEvent*event);覆写该函数,即可。 二、Example 创建一个基本的mainwindow项目, 头文件: class MainWindow : public QMainWindow {Q_OBJECTpublic:MainWin…...

MySQL基础篇一

基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数据库中表的记录 DCL: 数据控制语言&#xff…...

深入了解Java8新特性-日期时间API:OffsetDateTime类

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概24000多字,预计阅读时间长需要20分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&…...

企业微信http协议接口开发,发送位置消息

产品说明 一、 hook版本:企业微信hook接口是指将企业微信的功能封装成dll,并提供简易的接口给程序调用。通过hook技术,可以在不修改企业微信客户端源代码的情况下,实现对企业微信客户端的功能进行扩展和定制化。企业微信hook接口…...

CSS——基础选择器、文字控制属性

1、CSS定义 层叠样式表(Cascading Style Sheets,缩写为CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容)。 书写位置:title 标签下方添加style双标签,styl…...

08-中介者模式-C语言实现

中介者模式: Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.(用一个中介对…...

【开源】基于JAVA的医院门诊预约挂号系统

项目编号: S 033 ,文末获取源码。 \color{red}{项目编号:S033,文末获取源码。} 项目编号:S033,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…...

NodeJs(一):初识nodejs、模块化、CommonJS、ESModule等

目录 (一)Nodejs简介 1.nodejs是什么 2.nodejs架构 3.nodejs的应用场景 (二)准备工作 1.安装nodejs 2.nodejs版本管理工具 (三)nodejs的使用 1.node的输入 2.node的输出 3.其他的console方法 (四)全局对象 1.常见的全局对象 2.特殊的全局对象 3.global和window的…...

hive 命令记录(随时更新)

1.进入 hive 数据库: hive 2.查看hive中的所有数据库: show databases; 3.用 default 数据库 use default; 4.查看所有的表 show tables; 5.查询 book 表结构: desc book ; 6.查询 book 表数据 select * from book; 7.创建 shop 数据库 creat…...

java实战(五):理解多线程与多线程实现冒泡排序及可视化

多线程 1.多线程理解1.1线程概念1.2线程的创建和启动1.3线程的同步与互斥1.4线程的状态和生命周期1.5线程间的通信1.6处理线程的异常和错误1.7实践 2.效果3.代码 1.多线程理解 1.1线程概念 线程:计算机中能够执行独立任务的最小单位。在操作系统中,每个…...

mysql-binlog,redolog 和 undolog区别

binlog MySQL的binlog(二进制日志 或 归档日志)是一种记录数据库的更改操作的日志。它包含了对数据库进行的插入、更新和删除操作的详细信息。binlog是以二进制格式存储,可以用于恢复数据库、数据复制和数据同步等操作。具体来说&#xff0c…...

Redis SDS 源码

struct sdshdr {int len;int free;char buf[]; }; 底层数据结构的好处: 杜绝缓冲区溢出。减少修改字符串长度时所需的内存重分配次数。二进制安全。兼容部分C字符串函数。 常用命令: set key value、get key 等 应用场景:共享 session、分…...

肖sir__mysql之单表练习题2__(2)

mysql之单表练习题 一.建表语句 create table grade(class int(4),chinese int(8),english int(4),math int(8),name varchar(20),age int(8),sid int(4)primary key auto_increment) DEFAULT charsetutf8; insert into grade(class,chinese,english,math,name,age)values(1833…...

nuxt、vue实现PDF和视频文件的上传、下载、预览

上传 上传页面 <el-form-item :label"(form.ququ3 1 ? 参培 : form.ququ3 2 ? 授课 : ) 证明材料" prop"ququ6"><PdfUpload v-model"form.ququ6" :fileType"[pdf, mp4, avi, ts]"></PdfUpload> </el-form-i…...

c++ 写成.h .cpp main.cpp 多文件形式

1 .h 声明方法/函数 用于连接定义和实例使用 // max.h #ifndef MAX_H #define MAX_Hint max(int a, int b);#endif /* 在#ifndef和#define中使用的MAX_H就是指的max.h这个头文件的名字。具体来说,#ifndef MAX_H中MAX_H代表了max.h这个头文件的一个唯一的标识符。#define MAX_H…...

告别手动写Testbench!用Quartus II + ModelSim自动生成仿真模板的保姆级教程

Quartus II ModelSim自动化测试框架实战&#xff1a;从零构建高效数字电路验证流程 在数字电路设计领域&#xff0c;验证工作往往消耗工程师60%以上的开发时间。传统手动编写Testbench的方式不仅效率低下&#xff0c;还容易引入人为错误。Altera Quartus II内置的Test Bench T…...

[特殊字符] TCP/IP四层协议栈解析——互联网通信的“底层逻辑“

&#x1f4c5; 发布时间&#xff1a;2026年5月 | &#x1f3f7;️ 标签&#xff1a;TCP/IP、网络协议、网络架构、互联网原理、网络层 &#x1f50d; SEO关键词&#xff1a;TCP/IP协议栈、四层模型、ARP协议、IP协议、网络通信原理开篇暴击&#xff1a;你正在看这篇文章&#x…...

Diablo Edit2:暗黑破坏神2存档编辑器终极指南,5分钟掌握角色修改神器

Diablo Edit2&#xff1a;暗黑破坏神2存档编辑器终极指南&#xff0c;5分钟掌握角色修改神器 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否曾在暗黑破坏神2中花费数小时刷装备却一无所获&…...

Azure 资源管理器编程:resourcemanager 模块的 100+ 服务集成

Azure 资源管理器编程&#xff1a;resourcemanager 模块的 100 服务集成 【免费下载链接】azure-sdk-for-go This repository is for active development of the Azure SDK for Go. For consumers of the SDK we recommend visiting our public developer docs at: 项目地址:…...

终极量化数据获取指南:3步掌握pywencai高效获取同花顺问财数据

终极量化数据获取指南&#xff1a;3步掌握pywencai高效获取同花顺问财数据 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 在量化投资和金融数据分析领域&#xff0c;获取精准、实时的A股市场数据一直是技术开发者…...

【工业相机】大恒万兆网相机原生RS232串口调试|无需转换板、直连通信、最简接线教程(实测)

【工业相机】大恒万兆网相机原生RS232串口调试&#xff5c;无需转换板、直连通信、最简接线教程&#xff08;实测&#xff09;&#x1f4d1; 前言一、硬件说明二、最简接线方式&#xff08;重点&#xff09;2.1 接线逻辑2.2 实物接线&#xff08;直接照抄&#xff09;2.3 通俗口…...

基于以太网转换器的工业交换机接入方案提升数据传输效率与稳定性

一、项目背景 某中型自动化生产企业现有3条生产线&#xff0c;核心控制设备采用10套西门子S7-200 SMART CPU SR40 PLC&#xff0c;负责生产线配料、输送、检测等全流程控制。随着企业数字化升级推进&#xff0c;需实现PLC与上位机、触摸屏的数据实时交互&#xff0c;接入工厂简…...

告别‘偏科’模型:用CAST双流架构搞定视频动作识别,兼顾时空理解

时空双流协同&#xff1a;CAST架构如何重塑视频动作识别的平衡之道 视频动作识别正面临一个关键瓶颈——现有模型往往在时空理解上"偏科"。就像人类大脑需要左右半球协同工作才能完整理解世界一样&#xff0c;理想的视频理解模型也需要同时具备敏锐的空间感知和精准的…...

不只是YOLOv5!详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧

不只是YOLOv5&#xff01;详解Windows‘页面文件太小’错误的通用解决思路与内存优化技巧 当你在深夜赶工一个重要的机器学习项目&#xff0c;或是渲染一段4K视频时&#xff0c;突然弹出一个冰冷的错误提示&#xff1a;"页面文件太小&#xff0c;无法完成操作"。这一…...

手把手教你用BES AUDIO_DUMP抓取蓝牙耳机通话AEC前后音频(附AU播放教程)

蓝牙耳机AEC算法调试实战&#xff1a;从数据抓取到效果验证全流程 在嵌入式音频开发领域&#xff0c;通话降噪&#xff08;AEC&#xff09;算法的效果验证一直是工程师面临的痛点。传统调试方法往往依赖主观听感或简单波形对比&#xff0c;难以精准定位问题。本文将基于BES2500…...