Dubbo + RestEasy 实现文件上传与下载

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

Dubbo+RestEasy实现文件上传与下载
Dubbo+RestEasy实现文件上传与下载
Maven依赖
注解
代码实现
1、 上传
2、 下载
3、 上传、下载请求参数对象
测试
Dubbo+RestEasy实现文件上传与下载
通过JBOSS WILDLFY服务器,利用jboss resteasy实现文件流方式的上传与下载,方便、简洁。

Maven依赖 

    <dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxrs</artifactId></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-client</artifactId></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jackson-provider</artifactId></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jaxb-provider</artifactId></dependency><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-multipart-provider</artifactId><version>3.0.9.Final</version></dependency>

注解

@MultipartForm  -- 将http请求转化为类的对象
@Consumes("multipart/form-data") -- 只接收MIME TYPE为multipart/form-data的请求

代码实现
1、 上传
上传Rest接口方法

	import javax.ws.rs.Consumes;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.Produces;import javax.ws.rs.core.MediaType;	import org.jboss.resteasy.annotations.providers.multipart.MultipartForm;import com.sf.framework.domain.Result;...@POST@Path("upload")@Consumes(MediaType.MULTIPART_FORM_DATA)Result<String> uploadData(@MultipartForm UploadFileParaRequest request);

上传接口实现

   @Overridepublic Result<String> uploadData(UploadFileParaRequest request) {Result<String> result = new Result<>(true);try {// 文件存储路径String fileSavePath = "e://demo/";// 存储文件saveFile(request.getFileData(), fileSavePath);// 返回数据result.setObj(fileSavePath );}  catch (Exception e) {result.setSuccess(false);result.setErrorCode(ErrorCode.SYSTEM_EXCEPTION);result.setErrorMessage("系统异常");}return result;}


2、 下载
下载Rest接口方法

	import javax.ws.rs.Consumes;import javax.ws.rs.POST;import javax.ws.rs.Path;import javax.ws.rs.core.MediaType;import javax.ws.rs.core.Response;import org.jboss.resteasy.annotations.providers.multipart.MultipartForm;@POST@Path("download")@Consumes(MediaType.MULTIPART_FORM_DATA)@Produces("application/zip")Response downloadData(@MultipartForm DownloadRequest request);

下载接口实现

   @Overridepublic Response downloadData(DownloadRequest request) {ResponseBuilder response = Response.status(Status.OK);try {// 校验请求参数if (request == null || StringUtils.isEmpty(request.getFilePath())) {throw new BusinessException("文件路径为空", ErrorCode.NULL_DOWNLOAD_REQUEST_PARAM);}File file = new File(request.getFilePath());response = Response.ok((Object) file);} catch (Exception e) {response.status(Status.BAD_REQUEST);}return response.build();}


3、 上传、下载请求参数对象

  import java.io.Serializable;import java.util.Arrays;import javax.ws.rs.FormParam;import org.jboss.resteasy.annotations.providers.multipart.PartType;public class UploadFileParaRequest implements Serializable {private static final long serialVersionUID = 1L;// 文件内容@FormParam("fileData")private byte[] fileData;public byte[] getFileData() {return fileData;}@FormParam("file")@PartType("application/octet-stream")public void setFileData(byte[] fileData) {this.fileData = fileData; }}

 及:

  import java.io.Serializable;import javax.ws.rs.FormParam;public class DownloadRequest implements Serializable {private static final long serialVersionUID = 1L;// 文件路径@FormParam("filePath")private String filePath;public String getFilePath() {return filePath;}public void setFilePath(String filePath) {this.filePath = filePath;}}

测试
使用postman测试,设置body为“form-data”,选择待上传文件(zip)即可;下载接口选择“download”发送请求。

----------------------------------------------------------

补记:

实体类使用的注解为:

@FormParam("number")
private String number;


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员必须知道的10大基础实用算法及其讲解

算法一&#xff1a;快速排序算法 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下&#xff0c;排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较&#xff0c;但这种状况并不常见。事实上&#xff0c;快速排序通常明显比其他Ο(n log n) 算法更快&a…

《 双城记 》:无数的平民拥有的只是和她同样的眼睛 ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;此书我没有买&#xff0c;是在喜玛拉雅上听完的&#xff0c;主播&#xff1a;高乐高 。 1、卡顿&#xff1a; 一个才华斐…

Git远程操作详解

摘要&#xff1a;Git是目前最流行的版本管理系统&#xff0c;学会Git几乎成了开发者的必备技能。本文详细介绍5个Git命令&#xff0c;它们的概念和用法&#xff0c;理解了这些内容&#xff0c;你就会完全掌握Git远程操作。 【编者按】Git是一个分布式版本控制&#xff0f;软件…

《千只鹤》:面对爱,我们永远还行走在成长的路上 ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;之前我一直以为书名是 千纸鹤&#xff0c;直到真正拿到书才注意到&#xff0c;原来书名是《千只鹤》... 包括 2 部分&am…

程序员自我提高的几点建议 很实诚

一、背景 中国程序员的成长是与其学习环境相关&#xff0c;据统计&#xff0c;现时做计算机软件开发的人员65%是大专及本科学历&#xff0c;15%是来自于其他的培训机构。可见一个开发人员大致的学习经历和初步经验来自于大学。 而在印度&#xff0c;韩国&#xff0c;以及欧美一…

《 廊桥遗梦 》:用我的整个余生和全部的心来爱你 ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;此书也是在喜玛拉雅上听完的&#xff0c;完全免费&#xff0c;主播的声音我很喜欢 ... 1. 弗朗西斯卡 一个妻子、母亲&a…

如何系统性地保障软件性能

摘要&#xff1a;软件性能贯穿整个软件开发过程&#xff0c;从需求到设计&#xff0c;到开发&#xff0c;到测试&#xff0c;最后到发布反馈&#xff0c;其作为软件用户的第一体验显得尤为重要。如何系统性地保障软件性能呢&#xff1f;文中以QQ为例&#xff0c;分别阐述了在各…

深入理解 AMQP 协议

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;更多详情见 AMQP主页 &#xff1a;http://www.amqp.org/ 。 一、AMQP 是什么 AMQP&#xff08;Advanced Message Queuing…

广州市科目三电子路考--大观路通过经验

视频&#xff1a;大观路 &#xff1a; http://v.pps.tv/play_3EO9GY.html 大家好&#xff0c;我是2014年5月8日考科目三的&#xff0c;本人是90分通过考试&#xff0c;在掉头的时候死火被扣10分&#xff0c;下面我会说明为什么会被扣10分的。 大观路段考试&#xff0c;总体来…

SpringBoot:Actuator 监控管理工程各项信息

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在微服务体系中&#xff0c;有很多工程相互作用&#xff0c;如果其中某一个Down 了&#xff0c;可能就不是那么容易快速定位 bug 所属了…

2013科目三道路驾驶技能通用评判标准

一般规定&#xff1a;道路驾驶技能考试满分为100分&#xff0c;成绩达到90分的为合格。 道路驾驶技能通用评判 不合格情形&#xff1a;考试时出现下列情形之一的&#xff0c;评判为不合格&#xff1a; a)不按规定使用安全带或者戴安全头盔的&#xff1b; b)遮挡、关闭车内音视频…

如果编程语言是超级英雄……

摘要&#xff1a;此前我们曾假设过如果编程语言是女人&#xff0c;如果编程语言是把刀&#xff0c;现在我们将编程语言设想成电影中的超级英雄会是怎样一番情景呢&#xff1f; 说到编程语言&#xff0c;当然是萝卜白菜&#xff0c;各有所爱。假如要你在钟爱的语言之前加个超级…

Springboot:监控与管理 Actuator

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言&#xff1a; Actuator是一个暴露自身信息的模块&#xff0c;主要实现对应用系统的监控与管理。主要有三大功能&#xff1a; …

视频编解码,bbv 缓冲区的上溢和下溢

使用硬件相似的数据处理.一般都是数据进来,处理后立即发出去的形式.所以一般有一个数据进,一个数据出,2个接口. 硬件处理基本都要求实时.数据进来,处理之后马上发处理,这个时间要求非常短,一般要求控制在好多毫秒以内,才能达到实时的要求.一般硬件每秒钟能够处理的数据大小,在…

《Spring Cloud 与 Docker 微服务架构实战》笔记

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;springcloud系列文章见&#xff1a;springcloud 系列&#xff0c;一看就会 。 在此&#xff0c;只是记录细碎知识点。 1…

视频测试序列下载:YUV文件

1、http://www.tkn.tu-berlin.de/research/vid/&#xff08;此网站已经移走&#xff0c;正在寻找。&#xff09; CIF&#xff1a; Akiyo、Bridge (far) 、Bridge (close) 、Bus 、Container 、Coastguard 、Flower 、Football 、Foreman 、Hall 、Highway 、Mobile & Cale…

MyBatis : Example 条件查询 in 用法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 只是记录下。 Example example new Example(UserxxxLog.class);Criteria createCriteria example.createCriteria();List<String&…

跨平台2D/3D游戏开发框架libGDX发布1.2.0更新

摘要&#xff1a;基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费&#xff0c;而且具有极为强大的兼容性和高效性&#xff0c;近日&#xff0c;libGDX发布全新1.2.0版本&#xff0c;除修复Bug之外&#xff0c;还新增了OpenGL性能分析、gdx-ai等一系列功能扩展和方…

不把C作为第一门语言是个好主意么?

摘要&#xff1a;不少人认为&#xff0c;第一门语言最好不要学C&#xff0c;而V众投发起人李智勇却不这么看。他认为如果真想做好开发&#xff0c;想更好地实现人生价值&#xff08;包括现金价值&#xff09;&#xff0c;那么打基础很必要&#xff0c;而从C语言&#xff0c;这种…

系统集成项目管理工程师(软考中级)重点知识、背诵版

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 为了入户广州报考了软考中级&#xff0c;一次通过。 以下为背诵笔记&#xff1a;