2013-01-16 2 views
0

httpclient를 사용하여 파일을 업로드하고 있습니다. 업로드 후 파일 크기가 변경됩니다. 파일 업로드 중에 몇 가지 추가 사항이 파일에 추가됩니다. 포함 된 파일을 업로드하기 전에업로드 도중 파일 크기가 증가했습니다.

:

hi this is vipin check 

파일을 업로드 한 후이 포함 : 왜 파일 크기가 변화

--j9q7PmvnWSP9wKHHp2w_KCI4Q2jCniJvPbrE0 
Content-Disposition: form-data; name="vipin.txt"; filename="vipin.txt" 
Content-Type: application/octet-stream 
Content-Transfer-Encoding: binary 

hi this is vipin check 
--j9q7PmvnWSP9wKHHp2w_KCI4Q2jCniJvPbrE0-- 

? 왜이 추가 내용이 추가됩니까?

내 HttpClient를 코드는 다음과 같습니다 일어나고있는 것으로 보인다 무엇

HttpPut httppost = new HttpPut(URIUtil.encodeQuery(newUrl)); 
httppost.setHeader("X-Auth-Token", cred.getAuthToken()); 
httppost.addHeader("User-Agent", "NetMagic-file-upload"); 
System.out.println("Dest : " + dest.getAbsolutePath()); 

MultipartEntity mpEntity = new MultipartEntity(); 
ContentBody cbFile = (ContentBody) new FileBody(src); 
mpEntity.addPart(dest.getName(), cbFile); 
httppost.setEntity(mpEntity); 
System.out.println("executing request " + httppost.getRequestLine()); 

HttpResponse response = httpclient.execute(httppost); 
+0

로컬 파일을 업로드하면 변경됩니까? 아니면 서버에 도착할 것입니까? – flup

답변

0

클라이언트가 파일을 전송하는 다중 엔티티로 업로드 할 수 있지만, 서버가 일반 파일로 취급하고 있다는 것이다. 잘못이 어디에 있는지는 명확하지 않습니다.

  • 서버가 요청 헤더의 콘텐츠 형식을 무시할 수 있습니다. 이는 업로드 요청을 전달할 책임이있는 서블릿 (또는 무엇이든)의 버그 일 가능성이 큽니다.

  • 클라이언트가 요청 헤더에 콘텐츠 형식을 설정하지 않았을 수 있습니다. 나는 클라이언트 라이브러리가 당신을 위해 그것을 돌볼 것이라고 예상했을 것입니다. 그러나 명시 적으로해야 할 수도 있습니다.

요청 헤더가 클라이언트에 의해 보내지거나 서버에서 수신되어 적절한 멀티 파트 형식이 있는지 확인하는 것이 좋습니다. 그러면 문제가 어디에 있는지 알 수 있습니다.


그러나 분명한 해결책이 있습니다. 서버가 멀티 파트를 처리 할 수 ​​없으면 클라이언트 측에서 멀티 파트를 보내지 않도록 변경하십시오.

+0

(요청 방법 (PUT)과 다중 부분 인코딩의 결합 문제) –

0

PUT 요청을하고 있지만 클라이언트가 일반적으로 HTML 양식 게시물에서 사용하는 다중 문자 인코딩을 사용합니다.

+0

AFAIK, HTTP 사양에는 PUT 요청에서이 작업을 수행 할 수 없다는 내용이 없습니다. 반대로이 스펙에서는 멀티 파트 콘텐츠 유형을 적절하게 처리하거나 PUT 요청을 거부하는 것이 서버의 책임이라고 말합니다. (그러나 적절한 콘텐츠 유형 *이 전송된다는 방수 증거는 없습니다 ...) –

+0

사실입니다. 그러나 서버가 페이로드를 저장하는 것 외에는 아무것도하지 말아야한다고하는 사양에는 아무것도 없다. –

+0

신속한 스토리지에 파일을 업로드합니다 –