所以目前我正在开发一个简单的项目,用户可以将图像上传到服务器。在我提到我的问题之前,我就是这样做的:
客户端:
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);
}
});
仅供参考:imagedatatosend
大小低于5MB且包含所选的文件数据。
基本上会发生什么用户是否使用<input type="file"
标签选择图像然后我设置在canvas
中绘制的所选文件,将其转换为base64并将其发送到服务器。
Java Server:
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();
我想我可能不需要解释上面代码的作用。但是我面临一些严重的性能问题我的意思是将数据写入hi.jpg
文件需要花费一些时间,即使我尝试System.out.println(datareceived);
我的鼠标点击在服务器控制台上响应需要几秒钟。
我不知道为什么会这样,我需要将图像数据作为多部分发送还是什么?
所有回复都表示感谢,并提前致谢:)
答案 0 :(得分:0)
使用XMLHttpRequest和FormData附加文件。它将使用multipart发送并适当地分块。
请参阅:https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects