将blob上载到JAVA服务器API时收到400个错误请求
我正试图上传一个裁剪过的图像,将其作为一个blob发送,并得到一个400 http错误。 仔细检查时,我注意到以下异常: java.lang.IllegalStateException:实体输入流已关闭 JavaScript代码:将blob上载到JAVA服务器API时收到400个错误请求,java,ajax,html5-canvas,multipartform-data,jersey-2.0,Java,Ajax,Html5 Canvas,Multipartform Data,Jersey 2.0,我正试图上传一个裁剪过的图像,将其作为一个blob发送,并得到一个400 http错误。 仔细检查时,我注意到以下异常: java.lang.IllegalStateException:实体输入流已关闭 JavaScript代码: var fd = new FormData(); fd.append("pic", cblob); //append the blob $.ajax("/wsbasestructure/ws/users/test", { data: fd, type: "PU
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) {
}
});
Java代码:
@PUT
@Path("/test")
public String updatePic(@FormDataParam("pic") InputStream file){
System.out.println(file);
return null;
}
我错过了什么?
感谢您抽出时间。请参阅:
contentType: multipart/form-data
也许你应该改变网络服务
试试这个:
@PUT
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/test")
public String updatePic(
@FormDataParam("pic") InputStream file,
@FormDataParam("pic") FormDataContentDisposition fileDisposition) {
...
}
来源:这似乎不是你所指出的。仍然得到相同的异常。(我忘了在我已经尝试过的问题中描述)您是否也尝试添加注释@Consumes(MediaType.MULTIPART\u FORM\u DATA\u TYPE)?是的,它是在类本身中定义的。我不认为这与多部分定义有关,因为当我发送这样的文件时,
$(“#input”)[0]。文件[0]
。它起作用了。我在上传blob时遇到了这个问题,我真的需要上传这个从html5画布中提取的blob。变量cblob是如何初始化的?我是这样初始化这个变量的:function canvasToBlob(canvas,type){var byteString=atob(canvas.toDataURL().split(“,”[1]),ab=new arrarybuffer(byteString.length),ia=newuint8array(ab),i;for(i=0;i
。我遗漏了什么吗?是httpput
还是POST
在Ajax
代码片段中?@harshavmb,PUT。