jersey基于ssm进行上传图片总结
来源:互联网 发布:大蒜种植面积数据 编辑:程序博客网 时间:2024/06/05 02:41
业务需求 有一个专门存放图片的服务器
解决方案
1 应用Springmvc进行异步上传到控制器
2 应用jersey api 中的sendFile 进行文件上传
首先在Springmvc xml中进行配置
<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为1MB -->
<propertyname="maxUploadSize"value="1048576"/>
</bean>
在页面表单提交的时候属性必须设置为:enctype=”multipart/form-data”
<form id="jvForm" action="xxx" method="post" enctype="multipart/form-data"> ... <img width="100" height="100" id="allImgUrl"/> <input type="hidden" name="imgUrl" id="path" /> <input type="file" name="pic" onchange="uploadPic()"/></form>
js代码
<script type="text/javascript"> //异步上传图片 function uploadPic(){ //定义参数 var options={ url:"${pageContext.request.contextPath}/upload/uploadPic.do", dataType:"text", type:"post", success:function(data){ //将字符串格式转化成json对象 data=eval("("+data+")"); //回调两个路径 //url,绝对路径,用来在页面显示图片 //path,相对路径, 存入数据库 $("#allImgUrl").attr("src",data.url); //访问图片路径 $("#path").val(data.path); }, error:function(){ alert("upload error"); } }; //使用jquery.form异步上传图片 $("#jvForm").ajaxSubmit(options); } </script>
这里需要两台服务器,即两个Tomcat,一个是项目本身所在的服务器,假设8080,那么需要添加另外一台服务器作为图片存储所在的服务器,假设8888,在图片存储的服务器Tomcat(8888)中conf/web.xml中修改如下配置,也就是添加readonly=false,服务器内容默认只读,现在改成false,这样图片就能上传到这个服务器。
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <!-- 添加 --> <init-param> <param-name>readonly</param-name> <param-value>false</param-value> </init-param> <!-- --> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
springmvc进行处理 并用jersey进行上传
package test;import java.io.IOException;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import java.util.Map.Entry;import java.util.Random;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.FilenameUtils;import org.json.JSONObject;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.MultipartHttpServletRequest;import com.sun.jersey.api.client.Client;import com.sun.jersey.api.client.WebResource;/** * 上传图片 * @author Administrator * */@Controllerpublic class UploadController { //异步请求没有返回值,不用跳转页面,上传图片 @RequestMapping(value="/upload/uploadPic.do" ) public void uploadPic(@RequestParam(required=false) MultipartFile pic,HttpServletResponse response){ //图片名称生成策略 //1 因为这是一个高并发的,将时间精确到毫秒 DateFormat df=new SimpleDateFormat("yyyyMMddHHmmssSSS"); //作为名称的一部分 String format=df.format(new Date()); //2随机三位数 Random r=new Random(); for(int i=0;i<3;i++){ format+=r.nextInt(10); } //得到上传文件的扩展名 String ext=FilenameUtils.getExtension(pic.getOriginalFilename()); //保存数据库的path String path = "upload/" + format + "." + ext; //实例化一个jersey Client client=new Client(); //另一台服务器的请求路径是 String url = "http://localhost:8888/image-web/"+ path; //为实例设置请求路径,返回一个可以发送图片的对象 WebResource resource=client.resource(url); //发送开始 方法有post get put(图片基于put提交) // 1传递时以字符串传递 2 图片 try { resource.put(String.class,pic.getBytes()); } catch (Exception e) { e.printStackTrace(); } //返回两个路径 //JsonObject 拼接成json格式 JSONObject jo=new JSONObject(); jo.put("url", url); jo.put("path", path); //发送到前台(可以尝试这里改成"application/json;charset=UTF-8") response.setContentType("text/plain;charset=UTF-8"); try { response.getWriter().write(text); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
0 0
- jersey基于ssm进行上传图片总结
- 基于ssm的上传图片
- jersey上传图片,图片上传
- jersey上传图片
- ssm框架中基于springMVC进行的文件上传.
- ssm上传图片
- ssm上传图片
- ssm项目上传图片
- SSM uploadify 图片上传
- 使用jersey上传图片到图片服务器
- 使用jersey上传图片到图片服务器
- 使用jersey上传图片到图片服务器
- 图片上传--Jersey实现RESTful接口
- 图片上传--Jersey实现RESTful接口
- springmvc 中使用Jersey上传图片
- jersey上传图片到另外的服务器
- Jersey框架入门学习:Jersey图片服务器搭建总结
- ssm图片上传_fhm笔记
- matlab ismember函数
- P04: 混合三种背包问题
- 过滤器和拦截器
- 斐讯K2 烧写第三方固件的简单方法
- [Android新手学习笔记21]-百分比布局
- jersey基于ssm进行上传图片总结
- Jaxb解析器
- 简单的日志打印工具
- Ajax:readyState(状态值)和status(状态码)的区别
- Swift 元组的定义和取值
- 1036. Boys vs Girls 解析
- 文件下载原理详解 http协议
- [Android新手学习笔记22]-如何自定义控件
- iOS UIRefreshControl