我有一个方法将图像文件保存在数据库中作为BLOB文件。该方法工作正常,但当我在ExtJS filefield组件中得到回调时,它总是经历失败函数,我不知道我必须通过成功函数做出回应,这是我的代码:与泽西岛和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.APPLICATION_JSON })
而不是@Produces({ MediaType.TEXT_HTML })
,因为我需要Json响应。但是,当我在Chrome中调试和检查响应,我得到这个:
在失败:
failure : function(form, action) {
me.onCompleteSaveOrDelete();
}
在行动PARAM,内responseText
:
"{"data":"{\"success\":true}","httpResponse":true,"totalCount":0}"
但它仍然通过failure
去。 ..我觉得我很亲密,任何帮助?
问候。
你能否看看我的回答是否帮助你? –
嗨@ Alexander.Berg,你的回答非常有帮助,它确实帮了我,但它不能正常工作,它仍然抛出未找到MIME媒体类型文本/ html。任何想法? – Alavaros
嗨@Alavaros,也许下面的链接可以帮助你:[未找到MIME媒体类型文本/ html](http://stackoverflow.com/questions/8645674/a-message-body-writer-for-java- class-and-mime-media-type-text-html-was-not-f) –