因此,目前我正在开发一个简单的项目,用户可以将图片上传到服务器。之前,我在这里提到我的问题是我如何做它:如何使用ajax发送大文件?
客户:
var dataURL = sendingcanvas.toDataURL("image/*");
var imagedatatosend = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
formdata = {
'image': imagedatatosend
};
$.ajax({
url: '../receive',
type: 'POST',
data: formdata,
encode: false,
success: function(result){
alert(result);
}
});
FYI:imagedatatosend大小超过5MB较低且含有正好选择的文件数据。
基本上会发生什么是用户使用
Java服务器:
String datareceived = request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
byte[] bImg = Base64.decodeBase64(datareceived.getBytes("UTF-8"));
FileOutputStream fos = new FileOutputStream("hi.jpg");
fos.write(bImg);
fos.close();
我想我可能没有必要解释什么上面的代码一样。但是我面临着一些严重的性能问题我的意思是,即使我尝试System.out.println(datareceived);,将数据写入hi.jpg文件也需要花费很长时间,我的鼠标点击需要几秒钟才能响应服务器控制台。
我不知道为什么会发生这种情况,我需要将图像数据作为多部分发送还是什么?
所有答复都赞赏和感谢提前:)
+0
这听起来像一个完全的Java问题,您可能需要删除一些标签上你的问题。 –
+0
我不认为在'$ .ajax'中有一个'encode'选项,你应该将'processData'和'contentType'都设置为'false',但是当你发送一个B64时不需要这么做字符串,而不是实际的图像 –
+0
@adeneo我刚刚添加了'processData'和'contentType'值为false,但没有运气仍然有同样的问题 –