从客户端接收二进制映像并将其保存在服务器端

时间:2014-11-12 15:15:08

标签: java spring html2canvas

我正在开发一个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}

                });

            }

            });

1 个答案:

答案 0 :(得分:1)

您正试图通过网址传递图片,对吧?因此,在这种情况下,URL可能很长,服务器就无法解析此类请求。常规解决方案是在请求正文中使用POST发送数据。