使用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文件夹
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。