Java 2台のサーバ間でファイルを転送


参照
HttpClientでPOSTコミットフォームをシミュレートする
参照
送信側でコミットする方法
package com.wangyp.demo;

import java.io.InputStream;

import org.apache.commons.httpclient.DefaultMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.struts.upload.FormFile;

public class SendImageService {
	/**
	 *       FormFile   ,         .                             
	 * 
	 * @param ff
	 *            FormFile
	 * @param ImageName
	 *                
	 * @throws Exception
	 */
	public static void sendImage(FormFile ff, String ImageName) throws Exception {
		HttpClient hc = new HttpClient();

		PostMethod method = new PostMethod("http://192.168.0.156:8081/memo_ReceiveImages/receiveImages.do");
		NameValuePair[] nvp = { new NameValuePair("ImageName", ImageName), new NameValuePair("username", "baoku"),
				new NameValuePair("password", "19840523") };

		method.addRequestHeader("Content-Type", "text/html;charset=UTF-8");
		// method.getParams().setContentCharset("GB2312");
		DefaultMethodRetryHandler retryhandler = new DefaultMethodRetryHandler();

		retryhandler.setRequestSentRetryEnabled(false);

		retryhandler.setRetryCount(10);

		method.setQueryString(nvp);
		method.setRequestBody(ff.getInputStream());
		method.setMethodRetryHandler(retryhandler);

		hc.executeMethod(method);

		InputStream is = method.getResponseBodyAsStream();

		NameValuePair pair = method.getParameter("");

		String status = pair.getValue();
	}
}

参照
受信側が受信する方法
package com.wangyp.struts.service;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

public class ReceiveImageImpl {

	/**
	 *                 ,        
	 * 
	 * @param is
	 *            IO 
	 * @param ImageName
	 *                
	 * @return 
	 * @throws Exception
	 */
	public static void receiveImage(InputStream is, String ImageName) throws Exception {
		OutputStream os = null;
		try {
			String path = ReceiveImageImpl.class.getResource("/").toString().replace("file:/", "").replace("classes/",
					"").replace("/WEB-INF", "")
					+ "Image/" + ImageName + ".jpg";

			os = new FileOutputStream(path);

			// 8k    
			byte[] buffer = new byte[1024 * 8];
			//           
			int len;
			while ((len = is.read(buffer)) != -1) {
				//          
				os.write(buffer, 0, len);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			//      
			os.close();
			//      
			is.close();
		}
	}
}