当前位置: 首页 > 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…...

用VNA实测滤波器群时延:手把手教你避开IQ信号失真的坑(附校准技巧)

射频滤波器群时延实战&#xff1a;VNA测量技巧与IQ信号保真解决方案 在无线通信系统设计中&#xff0c;滤波器的群时延特性往往是被忽视的关键参数。许多工程师在评估滤波器性能时&#xff0c;主要关注插入损耗、带外抑制等传统指标&#xff0c;却忽略了群时延波动可能导致的信…...

彻底搞懂ScheduledThreadPoolExecutor

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

南京大学等联合发布开源语音大模型VITA-Qinyu,首发支持角色扮演+哼唱

在 AI 语音交互的赛道上&#xff0c;南京大学联合腾讯音乐研发的 VITA-Qinyu 正式亮相。这是业内首款兼具自然对话、高表现力角色扮演与歌唱能力的开源端到端语音语言模型&#xff08;SLM&#xff09;&#xff0c;一举打破了传统语音模型仅聚焦对话准确性、缺乏情感与场景表现力…...

基于S7-200控制的自动洗车系统 本设计包括设计报告,PLC组态仿真,I/O接口,带注释程序...

基于S7-200控制的自动洗车系统 本设计包括设计报告&#xff0c;PLC组态仿真&#xff0c;I/O接口&#xff0c;带注释程序pdf版&#xff0c;接线图&#xff0c;控制电路图&#xff0c;主电路图,PLC接线图&#xff0c;顺序功能图 总体设计 系统有自动和手动模式&#xff0c;选择手…...

表格设计:结构与美感并重

1. 表格的结构如果把表格比作一座建筑&#xff0c;那么它的每个结构部件都承担着特定功能。下面是一个完整的表格示例&#xff0c;展示了所有标准结构组件&#xff1a;表格结构图解&#xff1a;标题与副标题&#xff1a;表格的"名字"和"简介"&#xff0c;告…...

【从零开始学Java | 第二十五篇】TreeSet

目录 前言 一、TreeSet的特点 二、TreeSet集合默认的规则 1.默认排序/自然排序 2.比较器排序 总结 前言 在 Java 的集合框架中&#xff0c;Set 接口代表了一个不允许存在重复元素的集合。我们最常用的通常是 HashSet&#xff0c;因为它提供了极高的查找和插入效率。但是&…...

计算机春考-系统管理与服务器配置-01安装Windows Server 2012 R2操作系统

活动1 创建虚拟机1. 单击VMware 主界面中的【创建新的虚拟机】2. 进入【新建虚拟机向导】界面&#xff0c;选中【典型&#xff08;推荐&#xff09;】按钮设置配置类型&#xff0c;点击【下一步】3. 在安装客户机操作系统界面选择【稍后安装操作系统】&#xff0c;单击【下一步…...

提升开发效率:用快马一键生成自动化twitter x数据采集工具

今天想和大家分享一个提升开发效率的小技巧——如何快速搭建一个自动化采集Twitter X数据的工具。作为一个经常需要分析社交媒体数据的人&#xff0c;我发现手动收集数据实在太费时间了&#xff0c;于是研究了一下如何用Python实现自动化采集。 需求分析 首先明确我们需要实现的…...

新手入门指南:在快马平台上通过openclaw切换模型理解ai编程差异

作为一个刚开始接触AI编程的新手&#xff0c;我最近在InsCode(快马)平台上尝试了openclaw切换模型的功能&#xff0c;发现这个功能特别适合用来理解不同AI模型的代码生成特点。整个过程就像有个耐心的老师在旁边手把手教学&#xff0c;完全不需要任何编程基础就能上手。下面我就…...

终极指南:10个技巧快速解决iOS符号拦截失败问题

终极指南&#xff1a;10个技巧快速解决iOS符号拦截失败问题 【免费下载链接】fishhook A library that enables dynamically rebinding symbols in Mach-O binaries running on iOS. 项目地址: https://gitcode.com/gh_mirrors/fi/fishhook 如果你在使用fishhook进行iOS…...