使用Jersey构建图片服务器过程解析
这篇文章主要介绍了使用Jersey构建图片服务器过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前台页面代码
前台JS代码
//上传图片 functionuploadPic(){ //定义参数 varoptions={ url:"/upload/uploadPic.do", dataType:"json", type:"post", beforeSubmit:function(formData,jqForm,options){ //判断是否为图片 //将jqForm转成DOM对象 varf=jqForm[0]; //获取DOM对象中name为logoPic的值 varv=f.logoPic.value; //获取扩展名,并转成小写 varext=v.substring(v.length-3).toLowerCase(); //比对扩展名jpggifbmppng if(ext!="jpg"&&ext!="gif"&&ext!="bmp"&&ext!="png"){ alert("只允许上传图片!"); returnfalse; } //校验提交的表单 returntrue; }, success:function(data){ //回显图片内容 $("#allImgUrl").attr("src",data.url); $("#path").val(data.path); } }; //jquery.form使用方式 $("#jvForm").ajaxSubmit(options); }
在Spring中配置图片转换器
创建UploadController以及工具类
packagecn.itcast.core.controller.admin; importjava.io.IOException; importjava.text.DateFormat; importjava.text.SimpleDateFormat; importjava.util.Date; importjava.util.Random; importjavax.servlet.http.HttpServletResponse; importorg.apache.commons.io.FilenameUtils; importorg.json.JSONObject; importorg.springframework.stereotype.Controller; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.multipart.MultipartFile; importcom.sun.jersey.api.client.Client; importcom.sun.jersey.api.client.WebResource; importcn.itcast.common.web.ResponseUtils; importcn.itcast.core.web.Constants; @Controller publicclassUploadController{ //上传图片 @RequestMapping(value="/upload/uploadPic.do") publicvoiduploadPic(@RequestParam(required=false)MultipartFilepic,HttpServletResponseresponse){ //扩展名 Stringext=FilenameUtils.getExtension(pic.getOriginalFilename()); //图片名称生成策略 DateFormatdf=newSimpleDateFormat("yyyyMMddHHmmssSSS"); //图片名称一部分 Stringformat=df.format(newDate()); //随机三位数 Randomr=newRandom(); //n10000-99999 for(inti=0;i<3;i++){ format+=r.nextInt(10); } //实例化一个Jersey Clientclient=newClient(); //保存数据库 Stringpath="upload/"+format+"."+ext; //另一台服务器的请求路径是? Stringurl=Constants.IMAGE_URL+path; //设置请求路径 WebResourceresource=client.resource(url); //发送开始POSTGETPUT try{ resource.put(String.class,pic.getBytes()); }catch(IOExceptione){ e.printStackTrace(); } //返回二个路径 JSONObjectjsonObject=newJSONObject(); jsonObject.put("url",url); jsonObject.put("path",path); ResponseUtils.renderJson(response,jsonObject.toString()); } } packagecn.itcast.core.web; publicinterfaceConstants{ /** *图片服务器 */ publicstaticfinalStringIMAGE_URL="http://localhost:8088/BabasportProject_ImageService/"; } packagecn.itcast.common.web; importjava.io.IOException; importjavax.servlet.http.HttpServletResponse; publicclassResponseUtils{ //发送内容 publicstaticvoidrender(HttpServletResponseresponse,StringcontentType,Stringtext){ response.setContentType(contentType); try{ response.getWriter().write(text); }catch(IOExceptione){ e.printStackTrace(); } } //发送的是JSON publicstaticvoidrenderJson(HttpServletResponseresponse,Stringtext){ render(response,"application/json;charset=UTF-8",text); } //发送xml publicstaticvoidrenderXml(HttpServletResponseresponse,Stringtext){ render(response,"text/xml;charset=UTF-8",text); } //发送text publicstaticvoidrenderText(HttpServletResponseresponse,Stringtext){ render(response,"text/plain;charset=UTF-8",text); } }
搭建另一个Tomcat,作为图片服务器
图片服务器Tomcat的设置tomcat/conf/web.xml中内容更改
default org.apache.catalina.servlets.DefaultServlet debug 0 readonly false listings false 1
修改图片服务器的Tomcat的端口号
在BabasprotProject_ImageService项目的webapp目录下创建upload文件夹
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。