2010-07-14 2 views
2

answer에 설명 된 것처럼 Android SDK 만 사용하여 Android에서 multipart/form POST 업로드 진행률을 확보 할 수 없습니다. 스트림 버퍼링에 문제가 있기 때문입니다. Froyo 이후 고정 될 HttpURLConnection을 사용할 때 (http://code.google.com/p/android/issues/detail?id=3164#c6 참조).멀티 파트/양식 업로드 (Android)에서 진행률을 얻는 다른 방법

Apache HttpClient 3.1이 SDK에서 상당히 빠져 나왔고 SDK의 일부인 새 HttpClient가 완전히 채택되지 않았기 때문에 (멀티 파트 기능이 누락 됨) 누락 된 부분 (특히 apache- mime4j-0.6.jar 및 httpmime-4.0.1.jar)을 사용하여 다중 파트/양식 데이터 업로드를 수행하고 업로드 진행률을 얻습니다 (위에서 설명한 답변에서도 설명 됨).

이제 내가 새로운 질문을하는 이유는 설치된 앱 크기가 엄청나게 커졌습니다 (필자의 경우 170kb에서 732kb까지).

질문 : 멀티 파트/폼 데이터 업로드를 수행하고 앱 크기를 크게 늘리지 않고 업로드 진행률을 확보 할 수있는 다른 방법이 있습니까? 여기에 언급되지 않은 다른 라이브러리가 있거나 사용할 수 있습니까?

답변

0

전혀 다른 방식입니다. 업로드 시간이 오래 걸리면 일정한 대기 시간을 가지며 초당 ~ 1x보다 더 자주 진행 상황을 업데이트 할 수 없기 때문에 문제가 발생할 수 있습니다.

어쨌든 여기 내 의견이 있습니다. 서버 측에서 진행률을 추적 할 수 있습니다 (예 : using PHP and APC).

안드로이드에서는 HTTP를 통해 업로드 상태를 자주 폴링하고 UI를 업데이트하는 별도의 장치를 시작할 수 있습니다.

이 솔루션에는 몇 가지 단점이 있습니다. 여기에 내가 지금 생각할 수있는 작업은 다음과 같습니다

  • 구현하기 단지 (별도의 스레드, 추가 HTTP-연결 ..) 당신은 서버 측의 제어하고이 변경을하는 것도 필요
  • .
  • 업로드 중에 인터넷 트래픽을 추가로 생성하면 업로드 속도가 느려지고 더 많은 사용자가 무료 메가 바이트를 사용할 수 있습니다.
+0

제 경우에는 불행히도 서버 측을 제어 할 수 없습니다. – Manuel

+0

글쎄,이 분명히 작동하지 않습니다. 죄송 해요. – pableu

0

Apache HttpEntity 인터페이스는 개념 상 매우 단순합니다. 단순히 출력 스트림에 자신을 기록 할 수 있고 자체 MIME 유형을 알고있는 객체 일뿐입니다. 다중 부분 형식 MIME 유형도 매우 간단합니다. 따라서 중요한 외부 종속성이없는 대체 MultiPartEntity 구현을 작성하는 것이 매우 쉬우므로 응용 프로그램을 크게 부풀게하지는 않습니다.