【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,这个不管是自己写的上传的方法还是使用第三方 ...
随机推荐
- leaflet一个前端gis框架,比openlayer更简单
leaflet一个前端gis框架,比openlayer更简单 作者github:https://github.com/mourner?tab=overview&from=2009-12-01& ...
- 密码本(无bug版)
main.cpp #include <stdio.h> #include <stdlib.h> #include "data.h" #include &qu ...
- 启动Eclipse时,弹出failed to load the jni shared library
JDK版本和Eclipse版本不同的问题,JDK版本为64位,Eclipse版本为32位.
- ipython notebook环境搭建
默认已经装好python基本环境,再进行下面步骤: 1. 下载安装IPython: c:>pip.exe install ipython 系统就会去网上寻找ipython的包, 进行下载及安装 ...
- Java 关于微信公众号支付总结附代码
很多朋友第一次做微信支付的时候都有蒙,但当你完整的做一次就会发现其实并没有那么难 业务流程和应用场景官网有详细的说明:https://pay.weixin.qq.com/wiki/doc/api/js ...
- 【Matlab】绘制饼状统计图
a=tabulate(b); % b为需要绘制饼图的原始数据列,生成新的一个矩阵a label={'1','2','3'} % 设定饼图每块扇形代表的内容 percent=num2str(a(:,3) ...
- C# 读写XML文件示例
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...
- C基础入门 - 第一章 - C语言绪言
第1章 C语言绪言 1.1 C语言概述 1.1.1 C语言世界 1.1.2 C语言学习, 能当饭吃吗 1.2 开发环境构建 1.2.1 visual studio安装使用 1.2.2 visual s ...
- [How to]集成SQLite3
1.简介 本文将介绍IOS的开发过程中如何集成Sqlite的方法,目前Sqlite的版本为3,所以我们称之为Sqlite3. 在本文中我将介绍Sqlite3的开发配置,本地Sqlite3数据库的建立通 ...
- leetcode 之Candy(12)
这题的思路很巧妙,分两遍扫描,将元素分别和左右元素相比较. int candy(vector<int> &rattings) { int n = rattings.size(); ...