1先准备另外一台服务器,注意修改service.xml,里面的三个端口号,避免端口被占用221.修改web.xml使tomcat可以读写
2.配置如下:
<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>
3.创建一个javaweb工程,并在项目里创建一个upload文件夹,然后部署到本图片服务器的tomcat下
4,写上传图片到另外一台服务器的代码
1.先引进jersey需要的jar文件
commons-io-1.3.2.jar,jersey-client-1.18.1.jar,jersey-core-1.18.1.jar
使用异步提交图片
<tr>
<td width="20%" class="pn-flabel pn-flabel-h"><span class="pn-frequired">*</span>上传商品图片(90x150尺寸):</td>
<td width="80%" class="pn-fcontent">注:该尺寸图片必须为90x150。</td>
</tr>
<script type="text/javascript">
//上传图片
function uploadPic(){
//定义参数
var options = {
url : "/upload/uploadPic.do",
dataType : "json",
type : "post",
success : function(data){
//回调 二个路径
//url
//path
$("#allImgUrl").attr("src",data.url);
$("#path").val(data.path);
}
};
//jquery.form使用方式
$("#jvForm").ajaxSubmit(options);
}
</script>
package cn.itcast.core.controller.admin;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
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.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import cn.itcast.common.web.ResponseUtils;
/**
* 图片上传
* @author Bertram
*
*/
@Controller
public class UploadController {
@RequestMapping(value="/upload/uploadPic.do")
@ResponseBody
public void uploadPic(@RequestParam(required=false) MultipartFile pic,HttpServletResponse response){
//获取扩展名的方法
String extension = FilenameUtils.getExtension(pic.getOriginalFilename());
//图片名称生成策略,根据时间生成
DateFormat df=new SimpleDateFormat("yyyyMMddHHmmssSSS");
//图片的一部分
String format = df.format(new Date());
//随机三位数
Random random=new Random();
for(int i=0;i<3;i++){
format+=random.nextInt(10);
}
//实例化jersey实例
Client client=new Client();
//保存到数据库
String path="upload/"+format+"."+extension;
//另一台tomcat的请求参数
String url="http://localhost:8088/imageweb/"+path;
//设置请求路径
WebResource resource = client.resource(url);
//本地图片的路径
// String path="C:\\zbq.jpg";
//读图片保存到内存
// byte[] array = FileUtils.readFileToByteArray(new File(path));
//发送开始 基于put提交
try {
resource.put(String.class,pic.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
//返回两个参数到前台页面
JSONObject jsonObject=new JSONObject();
jsonObject.put("path", path);
jsonObject.put("url", url);
ResponseUtils.renderJson(response, jsonObject.toString());
}
}
//返回json,xml,文本数据到页面的工具类
package cn.itcast.common.web;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
/**
* 异步返回各种数据形式
* @author Bertram
*
*/
public class ResponseUtils {
public static void render(HttpServletResponse response,String contentType,String text){
response.setContentType(contentType);
try {
response.getWriter().write(text);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void renderJson(HttpServletResponse response,String text){
render(response, "application/json;charset=UTF-8", text);
}
public static void renderXml(HttpServletResponse response,String text){
render(response, "text/xml;charset=UTF-8", text);
}
public static void renderText(HttpServletResponse response,String text){
render(response, "text/plain;charset=UTF-8", text);
}
}
效果图: