2011-08-26 8 views
1

음 청크 모드에서 멀티 파트를 게시하는 방법을 궁금합니다. 3 부분으로 나눌 수있는 파일은 덩어리로 보내야합니다. 여기httpClient, 청크 모드에서 Multipart의 POST를 수행하는 중 ...

내가 무엇을 :

서버 측에
MultipartEntity multipartEntity = new MultipartEntity() { 
     @Override 
     public boolean isChunked() { 
      return true; 
     } 
    }; 

    multipartEntity.addPart("theText", new StringBody("some text", Charset.forName("UTF-8"))); 

    FileBody fileBody1 = new FileBody(file1); 
    multipartEntity.addPart("theFile1", fileBody1); 

    FileBody fileBody2 = new FileBody(file2); 
    multipartEntity.addPart("theFile2", fileBody2); 

    httppost.setEntity(multipartEntity); 

    HttpParams params = new BasicHttpParams(); 
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
    HttpClient httpClient = new DefaultHttpClient(params); 

    HttpResponse httpResponse = httpClient.execute(httppost); 

, 나는 기본적으로 내가 4 참조 총 ... 3 개 부분하지만, 그들은 하나 개의 조각으로 수신 청크되지 않습니다 예를 들어 파일을 수신 할 경계 만 나타나는 경우 : 3 - XXXx, 끝에 1 - XXXX--. ?. (

은 내가 그 일을 할 수있는 방법을 실현하려고 노력하고 무엇

덕분에 많은 팹

, 나는 isChunked의 재정 트릭하지만 ...을 할 것이라고 생각

답변

0

보통 괜찮은 서버 측 HTTP 프레임 워크 (예 : Java EE Servlet API)는 애플리케이션 코드에서 전송 코딩과 같은 전송 세부 정보를 숨 깁니다. 콘텐츠 스트림에서 읽음으로써 청크 구분 기호가 표시되지 않는다고해서 청크를 의미하지는 않습니다 코딩은 기본 HTTP 전송에서 사용되지 않았습니다.

http://hc.apache.org/httpcomponents-client-ga/logging.html

2

가 사용할 수없는 크기가 있어야하는 다중 몸이 청크 부분 중 하나를 생성하려면 :당신은 HttpClient를 여기에 설명 된대로 와이어 로깅을 활성화하여 생성 HTTP 패킷의 정확히 어떤 종류를 볼 수 있습니다. 스트리밍중인 부분과 같습니다.

예를 들어 파일 2가 정말로 큰 동영상이라고 가정 해 보겠습니다. 그 코드 wtih

FileBody fileBody2 = new FileBody(file2); 
multipartEntity.addPart("theFile2", fileBody2); 

: 당신은 당신의 코드의 일부를 대체 할 수있는 지금 세 번째 부분 대신 파일의의 InputStream이기 때문에

final InputStreamBody binVideo = new InputStreamBody(new FileInputStream(file2), "video/mp4", file2.getName()); 
multipartEntity.addPart("video", binVideo); 

, 당신의 다중 HTTP 요청 헤더 은 Transfer-이있을 것이다 인코딩 : 청크로 묶음.