본문 바로가기
개발/안드로이드

POST방식으로 파일과 텍스트 함께 전송 multipart/form-data이용

by darksilber 2011. 8. 24.
반응형

[출처] POST방식으로 파일과 텍스트 함께 전송 multipart/form-data이용|작성자 뭉개야



형식은 아래와 같습니다.

//========여기부터 시작부분

URL connectURL = new URL(pathURL);
HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection();

conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type","multipart/form-data;boundary=" + boundary);
dos.writeBytes(twoHyphens + boundary + lineEnd);

//==========여기까지는 정해진 부분입니다.

스트림을 열어줍니다.

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

그 후 전송할 내용을 지정하게 됩니다.

전송할 내용은

파일의 형식

- dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + fileName + "\"" + lineEnd);

웹과 연동을 할 id값                   웹에 저장될 파일명

의 형식을 띄게 됩니다.

텍스트의 형식

- dos.writeBytes("Content-Disposition: form-data; name=\"posx\"" + lineEnd); 의 형식을 띄게 됩니다.

웹과 연동을 할 id값

전송 방법은

dos.writeBytes(twoHyphens + boundary + lineEnd);

해당방식(파일이면 파일의 형식, 텍스트면 텍스트의 형식)을 넣고

dos.writeBytes(lineEnd);

dos.writeBytes(name);
dos.writeBytes(lineEnd);

의 식으로 넣어 줍니다.

위의 형식이 1개 전송의 경우이고 두개일 경우는

dos.writeBytes(twoHyphens + boundary + lineEnd);

해당방식(파일이면 파일의 형식, 텍스트면 텍스트의 형식)을 넣고

dos.writeBytes(lineEnd);

dos.writeBytes(name);
dos.writeBytes(lineEnd);

dos.writeBytes(twoHyphens + boundary + lineEnd);

해당방식(파일이면 파일의 형식, 텍스트면 텍스트의 형식)을 넣고

dos.writeBytes(lineEnd);

dos.writeBytes(name);
dos.writeBytes(lineEnd);

의 식으로 넣어줍니다.

전송할 내용을 모두 넣어준 경우에는

dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

dos.flush();

로 웹으로 데이터를 날려 줍니다.

( String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "AGaqwrER-----ARsagLGR---";

lineEnd와 twoHyphens는 지정.

boundary값은 내맘대로 절대 나오지 않을 것 같은 값으로.)

 

반응형

댓글