使用Jersey上传文件

采用jquery.form.js异步上传图片,并结合<form>表单

<script type="text/javascript">
    //采用jquery.form.js异步上传图片,并结合<form>表单

    function uploadPicture() {
        var options = {
            //请求路径
            url : "/upload/uploadPic.do",
            dataType : "json",
            type : "post",
            success : function(data) {
                //处理结果
                //将相对路径设置给隐藏域中,提交时用
                $("#imgUrl").val(data.path);
                //将全路径设置给img标签,显示图片用
                $("#allImgUrl").attr("src", data.url);
            }
        }
        $("#jvForm").ajaxSubmit(options);
    }
</script>

<tr>
      <td width="20%" class="pn-flabel pn-flabel-h"></td>
      <td width="80%" class="pn-fcontent">
      <img width="100" height="100" id="allImgUrl" />
      <!-- 图片存在数据库的路径 -->
      <input type="hidden" id="imgUrl" name="imgUrl"></input>
      <input type="file" onchange="uploadPicture()" name="uploadPic" /></td>
</tr>

一定要在form表单中填写enctype="multipart/form-data"

<form id="jvForm" action="/brand/add.do" method="post" enctype="multipart/form-data">  </form>

在springmvc.xml文件中添加文件软件器

    <!-- 图片转换器 -->
    <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize"  value="10485760"></property>
    </bean>

编写文件上传UploadController.java

 1 package cn.lzc.code.controller.admin;
 2
 3 import java.io.IOException;
 4 import java.text.DateFormat;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Date;
 7 import java.util.Random;
 8
 9 import javax.servlet.http.HttpServletResponse;
10
11 import org.apache.commons.io.FilenameUtils;
12 import org.json.JSONObject;
13 import org.springframework.stereotype.Controller;
14 import org.springframework.web.bind.annotation.RequestMapping;
15 import org.springframework.web.bind.annotation.RequestMethod;
16 import org.springframework.web.bind.annotation.RequestParam;
17 import org.springframework.web.multipart.MultipartFile;
18
19 import com.sun.jersey.api.client.Client;
20 import com.sun.jersey.api.client.ClientHandlerException;
21 import com.sun.jersey.api.client.UniformInterfaceException;
22 import com.sun.jersey.api.client.WebResource;
23
24 import cn.lzc.code.web.Constants;
25 import cn.lzc.common.web.ResponseUtils;
26
27 /**
28  * 上传文件管理Controller
29  *
30  * @author admin
31  *
32  */
33 @Controller
34 public class UploadController {
35
36     /**
37      * 异步上传图片
38      *
39      * @param uploadFile
40      * @param response
41      */
42     @RequestMapping(value="/upload/uploadPic.do",method=RequestMethod.POST)
43     public void uploadBrandPic(@RequestParam(required = false) MultipartFile uploadPic, HttpServletResponse response) {
44         // 图片名称生成策略---采用时间格式(精确到毫秒)并追加随机3位(10以内)数字
45         // 精确到毫秒
46         DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
47         String picName = df.format(new Date());
48         //随机再生成3位10以内的数
49         Random r=new Random();
50         for (int i = 0; i < 3; i++) {
51             picName+=r.nextInt(10);
52         }
53         //获取扩展名
54         String originalFilename = uploadPic.getOriginalFilename();
55         String ext = FilenameUtils.getExtension(originalFilename);
56         //相对路径
57         String path="upload/"+picName+"."+ext;
58         //全路径
59         String url="http://localhost:8088/image-web/"+path;
60
61         //jersey发送另一台Tomcat(可读写)
62         // 实例化Jersey
63         Client client=new Client();
64         //想要发送到的服务器地址,记住,必须设置tomcat服务器的权限,不然无法上传到tomcat
65         //设置请求路径
66         WebResource resource = client.resource(url);
67         try {
68             //发送开始put
69             resource.put(String.class, uploadPic.getBytes());
70         } catch (UniformInterfaceException e) {
71             // TODO Auto-generated catch block
72             e.printStackTrace();
73         } catch (ClientHandlerException e) {
74             // TODO Auto-generated catch block
75             e.printStackTrace();
76         } catch (IOException e) {
77             // TODO Auto-generated catch block
78             e.printStackTrace();
79         }
80         //返回json数据给页面,(包括url回显路径,Path保存数据库的路径)
81         JSONObject jo=new JSONObject();
82         jo.put("path", path);
83         jo.put("url", url);
84         //返回数据给页面
85         ResponseUtils.renderJson(response, jo.toString());
86     }
87 }

写一个RequestUtils.java工具类,用来响应相应的数据到前台页面

 1 package cn.lzc.common.web;
 2
 3 import java.io.IOException;
 4
 5 import javax.servlet.http.HttpServletResponse;
 6
 7 /**
 8  * Response帮助类 支持JSON XML Text
 9  *
10  * @author admin
11  *
12  */
13
14 public class ResponseUtils {
15     // 发送Json
16     public static void renderJson(HttpServletResponse response, String text) {
17         rend(response, "application/json;charset=UTF-8", text);
18     }
19
20     // 发送xml
21     public static void renderXml(HttpServletResponse response, String text) {
22         rend(response, "text/xml;charset=UTF-8", text);
23     }
24
25     // 发送text
26     public static void renderText(HttpServletResponse response, String text) {
27         rend(response, "text/plain;charset=UTF-8", text);
28     }
29
30     // 发送
31     public static void rend(HttpServletResponse response, String contextType, String text) {
32         // 设置传输类型
33         response.setContentType(contextType);
34         // 发送
35         try {
36             response.getWriter().write(text);
37         } catch (IOException e) {
38             // TODO Auto-generated catch block
39             e.printStackTrace();
40         }
41     }
42 }

原文地址:https://www.cnblogs.com/limn/p/9219213.html

时间: 2024-11-11 13:52:58

使用Jersey上传文件的相关文章

idea 内置tomcat jersey 跨服务器 上传文件报400错误

报错内容 com.sun.jersey.api.client.UniformInterfaceException: PUT http://.jpg returned a response status of 400 Bad Request 因为跨服务器上传文件,文件名中里面含有中文名称,所以报错,解决: 让文件服务器支持utf-8编码或者将文件名变成英文.(最好的就是根据时间加随机数 或者是UUID来命名) 简单版的jsersey上传 @RequestMapping("/fileupload3&

万家报账平台没有“上传文件”按钮的解决办法

在有的电脑没有"上传文件"的按钮? 第一步:首先检查浏览器设置. 第二步:找到IE的Internet选项菜单,开启菜单栏的根据下列方面找,如下图: 第三步:找到Internet选项后,点击,选择安全选项卡,并点击"自定义级别" 第四步:找到"将文件上载到服务器时包含本地目录路径"选择"启用".然后点击确定关闭IE,重启打开. 第五步:更新浏览器的flash版本.在百度中搜索"flash player官网"即

通过jQuery Ajax使用FormData对象上传文件

转自:http://www.cnblogs.com/labnizejuly/p/5588444.html FormData对象,是可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". <form id="uploadForm" enctype="multipart/form-data"> <input id="file" type="file"

数据采集之Web端上传文件到Hadoop HDFS

前言 最近在公司接到一个任务,是关于数据采集方面的. 需求主要有3个: 通过web端上传文件到HDFS; 通过日志采集的方式导入到HDFS; 将数据库DB的表数据导入到HDFS. 正好最近都有在这方面做知识储备.正所谓养兵千日,用兵一时啊.学习到的东西只有应用到真实的环境中才有意义不是么. 环境 这里只做模拟环境,而不是真实的线上环境,所以也很简单,如果要使用的话还需要优化优化. OS Debian 8.7 Hadoop 2.6.5 SpringBoot 1.5.1.RELEASE 说明一下,这

ssh连接服务器以及scp上传文件方法

本地控制台输入 ssh [email protected]外网ip或内网ip,举例:ssh [email protected]      这是用用户名为root的用户登录192.168.133.196这个地址所在的后台.如果提示以下红色部分错误: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @ @@@@@@

php+curl上传文件

因为公司项目用java做的,需要我这边用php上传文件.只给了个接口,参数都不明确,然后这边不提交表单,在生成pdf之后就立马上传.用了php+curl,总是没上传成功,这里看到了篇文章http://blog.sina.com.cn/s/blog_709475a101013dlf.html,希望可以借鉴.还有这篇http://www.cnblogs.com/jackluo/p/4113255.html

shell案例 - 统计用户上传文件的时间

问题与需求: 一个web服务跑论坛,每天都有很多用户会上传文件到服务器里,假设这些文件会保存在/data/www/attachment目录下,我想知道用户大概会在什么时候上传文件? 从而了解用户的行为习惯 解决思路: 1. 判断新文件是否被上传到了服务器里?以5分钟为一个间隔,进行检测. 2. 确定这些文件是什么时候被上传的? 3. 将新文件的列表输出到一个按年.月.日.时.分为名字的日志里,以方便我们进行查看分析 4. 写一个shell脚本来帮我们自动实现这个检测和记录的过程,当然只检测一次是

如何解决上传文件时文件内容相同

现在有这样一个需求:要求在上传文件时,凡是上传的文件,只要内容相同就只在服务器保存一份. 如何比较文件内容?如果当时思维受限,很难想到来比较文件内容的办法. 解决办法: 文件上传,肯定少不了用流来读文件,文件内容相同的根源就是:流读出来的字节码相同.这就想到了解决的办法,可是问题又来了.怎么比较字节码?想想那么长的字节码,如果用字符串的equals方法来比较,这不是一个好的解决办法.经过一番思考,我决定把流读出来的字节码进行MD5加密,用加密后的字符串来当作文件的文件名,然后在进行文件的上传(文

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &