我正在开发一个Spring-MVC应用程序,对于clientSide,我使用html2canvas函数来截取屏幕截图,然后我想将它发送到服务器进行进一步处理和转换。我发布下面的html2canvas代码。所以我有一个控制器映射,可以读取字节数组,但我只是无法将其传递给服务器,我不断收到错误(也显示在下面)。 最后,我想收到二进制图像并将其保存在服务器端。请告诉我。
错误:
INFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
Html2Canvas代码:
$(".description").click(function(){
html2canvas($('body'), {
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
$('<img>',{src:img}).appendTo($('#canvas-image'));
}
});
控制器代码:
@RequestMapping("/convertbase/{id}")
public String convertbase(@ModelAttribute("notices") Notes p,@PathVariable("id") byte[] id,Model model){
byte[] data = org.apache.commons.codec.binary.Base64.decodeBase64(id);
try {
FileOutputStream imageoutfile = new FileOutputStream("/home/akshay/check.png");
imageoutfile.write(data);
imageoutfile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/note/listing";
}
我做错了什么,任何指针都会有所帮助。谢谢你的时间。
新控制器:
@RequestMapping(value = "/convertbase/{id}",method = RequestMethod.POST)
public String convertbase(@RequestBody String body){
byte[] b = body.getBytes();
byte[] data = org.apache.commons.codec.binary.Base64.decodeBase64(b);
try {
FileOutputStream imageoutfile = new FileOutputStream("/home/akshay/check.png");
imageoutfile.write(data);
imageoutfile.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "redirect:/note/listing";
}
Ajax请求:
$(&#34; .DESCRIPTION&#34)。单击(函数(){
html2canvas($('body'), {
onrendered: function(canvas) {
var img = canvas.toDataURL("image/png");
$('<img>',{src:img}).appendTo($('#canvas-image'));
$.ajax({
url: '../convertbase',
type: 'POST',
data:{image:img}
});
}
});
答案 0 :(得分:1)
您正试图通过网址传递图片,对吧?因此,在这种情况下,URL可能很长,服务器就无法解析此类请求。常规解决方案是在请求正文中使用POST发送数据。