使用jersey实现图片上传到另外一台服务器

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);
	}


}

效果图:




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值