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


}

效果圖:




發佈了104 篇原創文章 · 獲贊 37 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章