2010년 12월 30일 목요일

android file upload

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

댓글 없음: