2017-04-10 2 views
0

잘라낸 이미지를 blob로 보내고 400 http 오류가 발생하여 업로드하려고합니다. 주의 깊게 살펴보면 다음과 같은 예외가 있음을 알았습니다 :BLOB를 JAVA 서버 Jersey API에 업로드 할 때 400 BAD REQUEST 가져 오기

java.lang.IllegalStateException : 엔터티 입력 스트림이 이미 닫혔습니다.

자바 스크립트 코드 :

var fd = new FormData(); 
fd.append("pic", cblob); //append the blob 
$.ajax("/wsbasestructure/ws/users/test", { 
    data: fd, 
    type: "PUT", 
    processData: false, 
    contentType: false, 
    success: function (data) { 
    } 
}); 

자바 코드 :

@PUT 
@Path("/test") 
public String updatePic(@FormDataParam("pic") InputStream file){ 
    System.out.println(file); 
    return null; 
} 

내가 여기에 놓친 거지 뭐? 감사합니다.

+0

이가요'HTTP PUT' 또는'Ajax' 코드에서 오며 'Post? – harshavmb

+0

@harshavmb, PUT. –

답변

0

참조 :

당신은 다중/폼 데이터 콘텐츠 형식으로 양식이 필요합니다. 따라서 다음이 필요합니다.

contentType: multipart/form-data 

아마도 웹 서비스를 변경해야합니다.

이 시도 :

@PUT 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
@Path("/test") 
public String updatePic(
    @FormDataParam("pic") InputStream file, 
    @FormDataParam("pic") FormDataContentDisposition fileDisposition) { 
    ... 
} 

출처 : Jersey doc

+0

당신이 지적한 것 같지는 않습니다. 여전히 동일한 예외가 발생합니다. (내가 이미 시도했음을 묻는 것을 잊었습니다.) –

+0

@Consumes (MediaType.MULTIPART_FORM_DATA_TYPE) 주석을 추가하려고 했습니까? – fandango

+0

예, 클래스 자체에 정의되어 있습니다. '$ ("input #) [0] .files [0]'과 같은 파일을 보낼 때 여러 부분 정의와 관련이 있다고 생각하지 않습니다. 그것은 작동합니다. blob을 업로드 할 때이 문제가 발생하며 html5 캔버스에서 추가 된이 blob을 업로드해야합니다. –

관련 문제