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.pswp.cn/news/447539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447539.shtml
英文地址,請注明出處:http://en.pswp.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;