데이터베이스의 이미지 파일을 BLOB 파일로 저장하는 방법이 있습니다. 이 메서드는 제대로 작동하지만 ExtJS filefield 구성 요소에서 콜백을 받으면 항상 실패 함수를 통과하고 성공 함수를 통해 응답해야하는 내용을 알지 못합니다. 내 코드는 다음과 같습니다.Jersey 및 ExtJS를 사용한 파일 업로드의 응답
서버 메서드 :
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces({ MediaType.APPLICATION_JSON })
public ServiceResponse uploadFile(@QueryParam("id") Long iconId, FormDataMultiPart form) {
CatIcon icon;
if (iconId != null) {
icon = catIconBean.getOne(iconId);
} else {
icon = new CatIcon();
}
byte[] image = form.getField("iconBmp").getValueAs(byte[].class);
if (image.length != 0) {
MultivaluedMap<String, String> headers = form.getField("iconBmp").getHeaders();
String type = headers.getFirst("Content-type");
List<String> list = Arrays.asList("image/gif", "image/png", "image/jpg", "image/jpeg",
"image/x-icon", "image/bmp");
if (list.contains(type)) {
icon.setIconBmp(image);
icon.setType(type);
}
}
icon.setDescription(form.getField("description").getValue());
icon.setFileName(form.getField("fileName").getValue());
icon = catIconBean.saveIcon(icon);
ServiceResponse sr = new ServiceResponse();
sr.httpResponse = true;
return sr;
}
위의 코드에서 무엇을 반환해야합니까?
클라이언트 :
uploadIcon : function(item, e, eOpts) {
var me = this;
var form = this.getDetail().getForm();
var valid = form.isValid();
if (!valid) {
return false;
}
var values = form.getValues();
if(values) {
form.submit({
url : myApplication.defaultHost() + 'icon/upload?id=' + values.id,
waitMsg : 'Uploading...',
success : function(form, action) {
me.onCompleteSaveOrDelete();
},
failure : function(form, action) {
me.onCompleteSaveOrDelete();
}
});
}
},
나는 그것이 내가 성공을 호출 할 방법, 그것은 호출 할 수 있도록 모두 콜백 함수에서 동일한 기능, me.onCompleteSaveOrDelete()
를 작성합니다.
인사말.
UPDATE :
내가 한 거의 같은 Alexander.Berg
는 대답했다. 유일한 차이점은 @Produces({ MediaType.TEXT_HTML })
대신 @Produces({ MediaType.APPLICATION_JSON })
을 쓰는 것입니다. Json Response가 필요하기 때문입니다.
failure : function(form, action) {
me.onCompleteSaveOrDelete();
}
, responseText
내 :
실패 :
"{"data":"{\"success\":true}","httpResponse":true,"totalCount":0}"
을하지만 여전히 failure
을 통해거야 내가 크롬에서 디버깅하고 응답을 확인하지만,이 얻을. .. 나는 내가 매우 가깝다고 생각한다, 어떤 도움?
인사말.
내 대답에 도움이 되었으면 좋겠습니까? –
안녕하세요 @ Alexander.Berg, 당신의 대답은 매우 도움이 되었어요. 정말 도움이되었지만 올바르게 작동하지 않았습니다. 여전히 'MIME 미디어 유형 text/html을 찾을 수 없습니다.' 어떤 생각? – Alavaros
안녕하세요 @Alavaros, 다음 링크를 클릭하면 도움이 될 수 있습니다. [MIME 미디어 유형 text/html을 찾을 수 없음] (http://stackoverflow.com/questions/8645674/a-message-body-writer-for-java- class-and-mime-media-type-text-html-was-not-f) –