HttpClient 4.3.1을 사용하여 파일을 업로드하고 싶습니다. File 객체 대신 multipart inputstream을 추가하여 업로드 진행을 제어해야합니다. 이 내 코드입니다 : 방법 MultipartEntityBuilder.addBinaryBody (Strin, 파일) 작동을 사용Java Apache HttpClient가 파일을 업로드하는 중 오류가 발생했습니다.
byte[] dump = ...;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(SENDLOG_URL);
MultipartEntityBuilder meb = MultipartEntityBuilder.create();
meb.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
// THIS WORKS!! meb.addBinaryBody("log", new File("C:\\temp.zip"), ContentType.APPLICATION_OCTET_STREAM,"log.zip");
InputStream is=new FileInputStream("C:\\temp.zip")
meb.addBinaryBody("log", is, ContentType.DEFAULT_BINARY, "log.zip");
httppost.setEntity(meb.build());
HttpResponse resp=httpclient.execute(httppost);
is.close();
하지만 MultipartEntityBuilder.addBinaryBody (Strin,의 InputStream)를 사용하여 작동하지 않습니다.
자바 클라이언트는 모든 오류가 발생하지 않지만,이 원격 서버 (아파치)의 답변입니다 :
HTTP/1.1 400 잘못된 요청 [날짜 : 2013년 11월 28일 (목) 09 : 46:08 그리니치 표준시, 서버 : 아파치/2.4.6 (유닉스) mod_fcgid/2.3.7, 콘텐츠 길이 : 226, 연결 : 닫기, 콘텐츠 - 유형 : 텍스트/HTML; charset = iso-8859-1]
왜 새 파일()과 새 FileInputStream() 사이에 이상한 동작이 발생합니까?
응답을받은 후 연결을 닫습니다. fos.close(); –
FileOutputStream을 의미합니까? 정말로 이것을 무시할 수 있습니다. 단지 임시 파일에 쓰는 것입니다. – Tobia
죄송합니다 ..... 입력 스트림의 인스턴스를 만들어 addBinaryBody 메서드에 전달하고 인스턴스를 사용하여 응답을 닫으면 –