加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

利用resteasy框架构建rest webservice----第三波:实现文件上传-

发布时间:2020-12-16 23:49:43 所属栏目:安全 来源:网络整理
导读:因为工作原因,很久时间木有更新了,不怕有时间久继续更新: 基本的resteasy的搭建详情请看第一、二波,我这里指的上传是指利用resteasy来获取:客户端HTTP开发包发送的body请求-----刚开始也没撒头绪,第一时间去google,发现有哥们问同样的问题,但是却没

因为工作原因,很久时间木有更新了,不怕有时间久继续更新:

基本的resteasy的搭建详情请看第一、二波,我这里指的上传是指利用resteasy来获取:客户端HTTP开发包发送的body请求-----刚开始也没撒头绪,第一时间去google,发现有哥们问同样的问题,但是却没有解决方法,于是乎就只有硬着头皮看英文文档,发现如下文档:

The @Context annotation allows you to inject instances of javax.ws.rs.core.HttpHeaders,javax.ws.rs.core.UriInfo,javax.ws.rs.core.Request,javax.servlet.HttpServletRequest,javax.servlet.HttpServletResponse,javax.servlet.ServletConfig,javax.servlet.ServletContext,and javax.ws.rs.core.SecurityContext objects.


翻译下呢就是说使用@Context 注解就可以将?javax.ws.rs.core.HttpHeaders,and javax.ws.rs.core.SecurityContext等等实例注入到变量中

server端resource类代码如下:

[html] view plain copy
  1. @PUT??
  2. @Path(value?=?"/{folder}/{fileName}")??
  3. public?Response?uploadFile(@PathParam("folder")?String?folder,@PathParam("fileName")?String?fileName,?????@Context?HttpServletRequest?request)??
  4. {??
  5. ????File?f?=?new?File("x:"+fileName);??
  6. ????InputStream?is?=?null;??
  7. ????try?{??
  8. ????????is?=?request.getInputStream();??
  9. ????????FileUtils.copyInputStreamToFile(is,?f);??
  10. ????}?catch?(IOException?e)?{??
  11. ????????//?TODO?Auto-generated?catch?block??
  12. ????????e.printStackTrace();??
  13. ????}??
  14. ????return?Response.ok().build();??
  15. }??


请主要看下以上代码红色部分,就相当于把HttpServletRequest请求注入到了request变量中,那么通过request对象获取获取输入流,则得到了body主体部分的数据。

客户端的代码如下

[html] view plain copy
  1. String?urlResouce?=?"http://localhost:8080/cloud-storeage-boss/muluSDF/xyz.png";?//?create?URL??
  2. ????????File?localFile?=?new?File("C:UsersmaomaoPictures2.png");??
  3. ????????try{??
  4. ??????????????
  5. ????????HttpURLConnection?urlConnection?=??
  6. ????????(HttpURLConnection)?(new?URL(urlResouce)).openConnection();??
  7. ????????urlConnection.setDoInput(true);??
  8. ????????urlConnection.setDoOutput(true);??
  9. ????????urlConnection.setRequestMethod("PUT");??
  10. ????????OutputStream?urlOutputStream?=?urlConnection.getOutputStream();??
  11. ????????FileInputStream?fileInputStream?=?new?FileInputStream(localFile);??
  12. ????????IOUtils.copy(fileInputStream,?urlOutputStream);??
  13. ????????fileInputStream.close();??
  14. ????????urlOutputStream.close();??
  15. ????????System.out.println(urlConnection.getResponseCode());??
  16. ????????}??
  17. ????????catch(Exception?e)??
  18. ????????{??
  19. ????????????e.printStackTrace();??
  20. ????????}??


通过此客户端的调用,就可以将本地的2.png文件上传到服务器,并被保存为xyz.png.


上传就是如此的简单,如果大家有兴趣,下一波会讲讲form方式的提交上传或者下载文件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读