본문 바로가기
JAVA

HTTP POST 를 이용한 파일 전송하기

by 쑝스토리 2018. 9. 17.
반응형

httpclient 를 이용한 POST 파일, 이미지 전송

프로젝트를 진행 하며 클라이언트가 파일업로드를 하면

파일을 서버에서 PDF로 변환 한뒤, 다시 클라이언트 리다이렉트 해주는 로직을 

구현하고 있습니다. 자바의 org.apache 를 이용하여 post 방식으로 

파일을 서버에 전송하는 소스파일 입니다.


HTTP POST 를 이용한 파일 전송하기


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;

public class FileClient {
	public static void main(String args[]) {
	}
	public void fileServer(String rootPath, String fileName) {

		try {
			HttpClient httpclient = HttpClientBuilder.create().build();

			// xml파일을 수신할 서버주소
			HttpPost httppost = new HttpPost("http://localhost:7070/Test.jsp");
			StringBuffer fileData = new StringBuffer(1000);
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					new FileInputStream(rootPath +	fileName), "utf-8"));
			System.out.println("저장경로 = " + rootPath + fileName);
			char[] buf = new char[1024];
			int numRead = 0;
			while ((numRead = reader.read(buf)) != -1) {
				fileData.append(buf, 0, numRead);
			}
			reader.close();
			String xml_string_to_send = fileData.toString();
			StringEntity string_entity = new StringEntity(xml_string_to_send,"UTF-8");
			string_entity.setContentType("application/x-www-form-urlencoded");
			httppost.setEntity(string_entity);
			HttpResponse httpResponse = httpclient.execute(httppost);
			System.out.println("Response Code : "+ httpResponse.getStatusLine().getStatusCode()+ "    Response StatusLine : "
					+ httpResponse.getStatusLine());

			HttpEntity response_entity = httpResponse.getEntity();
			String response_string = EntityUtils.toString(response_entity);
			System.out.println(response_string);

		} catch (Throwable t) {
			t.printStackTrace();
		}
	}
}


반응형