android에서 파일을 전송하려면 코드는 간단하다.
public String sendFile(String urlServer, String fileName){
File file = new File(fileName);
String result = null;
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlServer);
ContentBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("file", bin);
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);
/*
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
Log.w("RESPONSE",EntityUtils.toString(resEntity));
}
*/
if (response != null){
result = getResponseContent(response);
}
} catch (Exception e) {
Log.e("Error", "sendFile", e);
}
return result;
}
일반적인 POST방식의 전송과 기본을 동일하다.
POST에 담을 entity를
ContentBody bin = new FileBody(file);
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("file", bin);
선언한다는게 특이한 점이다.
물론 일반적인 parameter를 추가하고 싶다면 일반적인 POST방식처럼 add하면 된다.
하지만 이 부분에서의 삽질은 사용하려는 class가 android가 지원하는 class가 아니라는점.
httpclient-4.0.3.jar
httpmime-4.0.3.jar
apache-mime4j-0.6.jar
buildpath에 추가해야 한다.
프로젝트 바로 하위에 lib폴더를 만들고 추가했다.
구글링을 해보면
httpclient-4.0.3.jar
httpmime-4.0.3.jar
이것만 필요하다고 나오지만
apache-mime4j-0.6.jar
이게 없으면 절대 않된다.
return받은 response를 활용하는 부분은 기본적인 POST전송방식과 동일하다.
#SCMInno #에스씨엠이노 #WEBDeK
댓글 없음:
댓글 쓰기