【Jersey】图片上传及显示
一、前期准备
图片上传需要用到的一些依赖:
<dependency>
<groupId>org.jvnet.mimepull</groupId>
<artifactId>mimepull</artifactId>
<version>1.7</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>${jersey.version}</version>
</dependency>
二、Jersey注解
@Path("/img")
表示访问路径为/img,并且可以接收参数,例如@Path("/images/{name}.{type}"),再利用@PathParam来接收name和type两个参数;同时也支持正则表达式,例如@Path("username/{username:[a-zA-Z][0-9]*}")
@POST
代表接受的HTTP请求类型为POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
表示接受的数据类型为"multipart/form-data"
@Produces(MediaType.APPLICATION_JSON)
表示发生出去的数据类型为"application/json"
@FormDataParam
接收图片、文件等特定类型数据
@Context
接收POST请求中发送的参数
@QueryParam
获取GET请求中url中的参数,例如请求url为http://localhost:8080/user?username=Amy&age=12&gender=male,那么可以使用:
@Path("/user")
@GET
public addUser(@QueryParam("username") String username,
@QueryParam("age") int age,
@QueryParam("gender") String gender) {
//.....
}
来接收这三个参数。
@PathParam
获取URL路径参数
三、代码
public static final String ImgPath = "D:/Imgaes/";
@Path("/uploadimg")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadImg(@FormDataParam("file") InputStream fileInputStream,
@FormDataParam("file") FormDataContentDisposition dataContentDisposition,
@Context HttpServletRequest request) {
String imgName = Calendar.getInstance().getTimeInMillis() + dataContentDisposition.getFileName();
File file = new File(ImgPath + imgName);
try {
FileUtils.copyInputStreamToFile(fileInputStream, file);
} catch (IOException e) { e.printStackTrace();
}
JsonBuilder resultJson = new JsonBuilder();
resultJson.append("ret", request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort() + "/app/images/" + imgName);
return resultJson.toString();
} @Path("/images/{name}.{type}")
@GET
public void showImg(@PathParam("name") String imageName,
@PathParam("type") String type,
@Context HttpServletResponse response)
throws IOException {
InputStream inputStream = null;
OutputStream out = null;
try {
File file = new File(ImgPath + imageName + "." + type);
inputStream = new FileInputStream(file);
out = response.getOutputStream();
// pic size = 1M
byte[] bytes = new byte[1024 * 1024];
int len = 0;
while ((len = inputStream.read(bytes)) > 0) {
out.write(bytes, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (inputStream != null)
inputStream.close();
if (out != null)
out.close();
}
}
【Jersey】图片上传及显示的更多相关文章
- ruby on rails爬坑(三):图片上传及显示
一,问题及思路 最近在用rails + react + mysql基本框架写一个cms + client的项目,里面涉及到了图片的上传及显示,下面简单说说思路,至于这个项目的配置部署,应该会在寒假结束 ...
- 图片上传即时显示javascript代码
这是基于javascript的一种图片上传即时显示方法,测试结果IE6和火狐浏览器可以正常使用.google浏览器不兼容. 这种方法兼容性比较差,仅供参考,建议使用ajax方法来即时显示图片. 1.首 ...
- 图片上传并显示(兼容ie),图片大小判断
图片上传并显示(兼容ie),图片大小判断 HTML <div id="swf" style="margin: 0 auto;text-align: center;& ...
- struts中用kindeditor实现的图片上传并且显示在页面上
做公司网站的时候由于需要在内容属性中加入图片,所以就有了这个问题,本来一开始找几篇文章看都是讲修改kindeditor/jsp/file_manager_json.jsp和upload_json.js ...
- ueditor图片上传和显示问题
图片上传: 这段是contorller代码 @RequestMapping(value = "/uploadImg", method = RequestMethod.POST) @ ...
- MVC图片上传并显示缩略图
前面已经说了怎么通过MVC来上传文件,那么这次就说说如何上传图片然后显示缩略图,这个的实用性还是比较大.用UpLoad文件夹来保存上传的图片,而Temp文件夹来保存缩略图,前面文件上传部分就不再重复了 ...
- django 图片上传与显示
由于图片上传的需要,学习了一波上传 1. 上传 前端代码 <form action="写上相应的定向位置" method="post" enctype=& ...
- 图片上传和显示——上传图片——上传文件)==ZJ
http://www.cnblogs.com/yc-755909659/archive/2013/04/17/3026409.html aspx上传 http://www.cnblogs.com/mq ...
- 安卓自定义View实现图片上传进度显示(仿QQ)
首先看下我们想要实现的效果如下图(qq聊天中发送图片时的效果): 再看下图我们实现的效果: 实现原理很简单,首先我们上传图片时需要一个进度值progress,这个不管是自己写的上传的方法还是使用第三方 ...
随机推荐
- Ubuntu12.04 SVN安装过程
一.安装SVN和配置SVN 1.安装SVN apt-get install subversion 2.创建SVN目录,项目目录和配置文件目录 mkdir /var/svn mkdir /var/svn ...
- Python随机选择Maya场景元素
之前在公司参与的一个与国外合作的项目中,有一景需要动态.随机地选取场景中的一些物体,同时显示指定材质,当时是用Houdini的节点+Hscript 解决的: 今天用简洁优雅的Python在Maya中写 ...
- 【51NOD-0】1134 最长递增子序列
[算法]动态规划 [题解]经典模型:最长上升子序列(n log n) #include<cstdio> #include<algorithm> #include<cstr ...
- 超详细的Java面试题总结(一)之Java基础知识篇
面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的因 ...
- WinRAR分割超大文件
在自己的硬盘上有一个比较大的文件,想把它从网上通过E-Mail发送给朋友时,却发现对方的收信服务器不能够支持那么大的文件……,这时即使用ZIP等压缩软件也无济于事,因为该文件本身已经被压缩过了.于是许 ...
- Tomcat的安装以及基本配置
Tomcat是目前最常见也是最流行的基于java的一个web服务器软件 Tomcat的安装 (1)首先需要java环境,也就是说要依赖于java虚拟机JVM (2)下载Tomcat ,地址 ...
- js_同步和异步
刚开始写js那会,对这一块是知之甚少,太多太多的知识不足,致使做什么都很艰难.现在工作也有段时间了,知识也有了点积累, 写点什么分享一下. 同步和异步?这个问题是在使用ajax请求后台数据的时候出现的 ...
- xgboost/gbdt在调参时为什么树的深度很少就能达到很高的精度?
问题: 用xgboost/gbdt在在调参的时候把树的最大深度调成6就有很高的精度了.但是用DecisionTree/RandomForest的时候需要把树的深度调到15或更高.用RandomFore ...
- ipython notebook环境搭建
默认已经装好python基本环境,再进行下面步骤: 1. 下载安装IPython: c:>pip.exe install ipython 系统就会去网上寻找ipython的包, 进行下载及安装 ...
- kimbits_USACO
StringsobitsKim Schrijvers Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits ...