当前位置: 首页 > 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 感谢

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

http://www.lryc.cn/news/250619.html

相关文章:

  • js校验多个时间段的时间是否有交叉
  • Python Spyder开发的应用项目
  • ES6知识点
  • 数据结构详解各种算法
  • Qt实现右键菜单
  • MySQL基础篇一
  • 深入了解Java8新特性-日期时间API:OffsetDateTime类
  • 企业微信http协议接口开发,发送位置消息
  • CSS——基础选择器、文字控制属性
  • 08-中介者模式-C语言实现
  • 【开源】基于JAVA的医院门诊预约挂号系统
  • NodeJs(一):初识nodejs、模块化、CommonJS、ESModule等
  • hive 命令记录(随时更新)
  • java实战(五):理解多线程与多线程实现冒泡排序及可视化
  • mysql-binlog,redolog 和 undolog区别
  • Redis SDS 源码
  • 肖sir__mysql之单表练习题2__(2)
  • nuxt、vue实现PDF和视频文件的上传、下载、预览
  • c++ 写成.h .cpp main.cpp 多文件形式
  • 组合总和(回溯)
  • 【代码】微电网两阶段鲁棒优化经济调度方法(完美复现)matlab-yalmip-cplex/gurobi
  • 关于无线测温系统在海上石油平台的应用探讨-安科瑞 蒋静
  • CSS 滚动捕获 scroll-padding
  • asp.net core webpi 结合jwt实现登录鉴权
  • 【香橙派】实战记录2——烧录安卓镜像及基本功能
  • 【spring(六)】WebSocket网络传输协议
  • MidJourney笔记(6)-Niji模式
  • Linux命令(139)之ab
  • 笔记----单纯剖分----1
  • mybatis源码(五)springboot pagehelper实现查询分页