【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路径参数

三、代码

 1 public static final String ImgPath = "D:/Imgaes/";
 2 @Path("/uploadimg")
 3     @POST
 4     @Produces(MediaType.APPLICATION_JSON)
 5     @Consumes(MediaType.MULTIPART_FORM_DATA)
 6     public String uploadImg(@FormDataParam("file") InputStream fileInputStream,
 7                             @FormDataParam("file") FormDataContentDisposition dataContentDisposition,
 8                             @Context HttpServletRequest request) {
 9         String imgName = Calendar.getInstance().getTimeInMillis() + dataContentDisposition.getFileName();
10         File file = new File(ImgPath + imgName);
11         try {
12             FileUtils.copyInputStreamToFile(fileInputStream, file);
13         } catch (IOException e) {
14
15             e.printStackTrace();
16         }
17         JsonBuilder resultJson = new JsonBuilder();
18         resultJson.append("ret", request.getScheme() + "://" + request.getServerName() + ":"
19                 + request.getServerPort() + "/app/images/" + imgName);
20         return resultJson.toString();
21     }
22
23     @Path("/images/{name}.{type}")
24     @GET
25     public void showImg(@PathParam("name") String imageName,
26                         @PathParam("type") String type,
27                         @Context HttpServletResponse response)
28             throws IOException {
29         InputStream inputStream = null;
30         OutputStream out = null;
31         try {
32             File file = new File(ImgPath + imageName + "." + type);
33             inputStream = new FileInputStream(file);
34             out = response.getOutputStream();
35             // pic size = 1M
36             byte[] bytes = new byte[1024 * 1024];
37             int len = 0;
38             while ((len = inputStream.read(bytes)) > 0) {
39                 out.write(bytes, 0, len);
40             }
41         } catch (Exception e) {
42             e.printStackTrace();
43         } finally {
44             if (inputStream != null)
45                 inputStream.close();
46             if (out != null)
47                 out.close();
48         }
49     }
时间: 2024-08-11 05:33:18

【Jersey】图片上传及显示的相关文章

【Servlet】利用Servlet3.0标准与JSTL表达式实现文件上传系统,支持图片上传后显示

伴随着JDK1.6一起出现的Servlet3.0标准,使得JSP的文件上传系统不再艰难,此前在JSP的文件上传系统需要<[Jsp]使用jspsmartupload完成简单的文件上传系统>(点击打开链接)类似这样的插件才能完成的文件上传系统,还不支持中文,使得各位程序猿掏空心思才能解决这个问题.现在Servlet3.0对文件上传的方法进行封装,无须分块就可以实现.而且Servlet3.0还不用类似<[Servlet]最简单的Servlet JavaWeb程序>(点击打开链接)在web

图片上传即时显示javascript代码

1.首先是javascript代码 /** * 图片上传即时显示javascript */ var allowExt = [ 'jpg', 'gif', 'bmp', 'png', 'jpeg' ]; var preivew = function(file, container) { try { var pic = new Picture(file, container); } catch (e) { alert(e); } }; // 缩略图类定义 var Picture = function

图片上传及显示(包含多文件)

前一段时间用到文件上传,好久没有写这个东西,有的东西也忘记了.所以本篇博客BZ决定记载一下,一方面自己回顾加深一下,另一方面供各位程序员学习. 希望大神们对本文不对的地方进行批评指正! 先在我们的html页面写上上传文件的文本框及图片显示所在的DIV,如下: 1 <div class="form-group"> 2 <label class="col-sm-2 control-label no-padding-right" id="lb_

MVC图片上传并显示缩略图

前面已经说了怎么通过MVC来上传文件,那么这次就说说如何上传图片然后显示缩略图,这个的实用性还是比较大.用UpLoad文件夹来保存上传的图片,而Temp文件夹来保存缩略图,前面文件上传部分就不再重复了,不过图片上传当然只能是图片格式的文件,因此在之前那篇博客中 通过控制格式的上传便能防止恶意上传,这个是文件上传的教程链接:http://www.cnblogs.com/xmfdsh/p/3988868.html 对于数据库的设计的话就随便点: 于是用EF便自动生成了类如下: public part

android自定义View实现图片上传进度显示(仿手机QQ上传效果)

首先看下我们想要实现的效果如下图(qq聊天中发送图片时的效果): 再看一下我实现的效果: 1.效果已经看见了,下面我们来实现它.首先我创建一个android工程ProgressImageView.然后我们重写ImageView控件,创建ProcessImageView类代码如下: package com.example.processimageview; import android.annotation.SuppressLint; import android.content.Context;

安卓自定义View实现图片上传进度显示(仿QQ)

首先看下我们想要实现的效果如下图(qq聊天中发送图片时的效果): 再看下图我们实现的效果: 实现原理很简单,首先我们上传图片时需要一个进度值progress,这个不管是自己写的上传的方法还是使用第三方开源库,其次,需要自定义一个View并重写onDraw方法,此例中的进度是开启了一个线程,然后模仿进度递增,然后将进度值通过自定义View调用一个自定义方法传进自定义View并根据进度进行重绘. 绘制分为三部分: 1.绘制矩形(图片面积)上半部分阴影区: 2.绘制矩形(图片面积)下半部分非阴影区:

移动端开发之图片上传与显示

1.上传,使用servlet以及ajax (1)需要引入的包: (2)配置web.xml (3)引入servlet的程序 servlet代码: package upload; import java.sql.*;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import java.util.List; import javax.servlet.Serv

图片上传与显示时候的路径问题

上传时候的要求将图片放到tomcat下面: 显示的时候:server.xml 原文地址:https://www.cnblogs.com/haoxiu1004/p/9239676.html

js实现图片上传实时显示

在开发的时候经常遇到这样的需求,用户在上传图片的时候,想要看到自己上传的图片是否正确,这时候需要把用户上传的图片及时显示出来,然后等他点击上传的时候,程序再执行上传到服务器. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body&g