2016-09-19 2 views
0

Как-то я захватывая холст изображение с помощью камеры и отправить его canvas.toDataURL() к серверу, поэтому сервер может сохранить его в виде файла в формате PNG, сейчас, прежде чем я упоминаю эту проблему вот мой код:Как получить canvas `toDataURL()` в java сервлет?

var dataURL = canvas.toDataURL("image/png"); 
    formdata = dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
    alert(formdata); 
    $.ajax({ 
     url: '../canvasdopost', 
     type: 'POST', 
     data: formdata, 
     processData: false, 
     contentType: false, 
     success: function(data){ 

     } 
    }); 

Сервер:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    Part part = request.getPart("canvasdata"); 
     BufferedReader br = new BufferedReader(new InputStreamReader(part.getInputStream(), 
      Charset.forName("utf-8"))); 
     String sImg = br.readLine(); 
     System.out.print(sImg); 
} 

Сервер вывода консоли:

java.lang.IllegalStateException: Невозможно обработать детали в конфигурации из нескольких частей не было предусмотрено в org.apache.catalina.connector.Request.parseParts (Request.java:2733)

Я также попытался:

String test = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); 
System.out.print(test); 

теперь проблема в том, что я никогда не получу консоль сервера для вывода что я получаю в своем окне предупреждения клиента перед отправкой данных.

И спасибо за те же, кто говорит мне, как сохранить полученные данные base64 до фактического файла изображения

ответ

0

Только для тех, кто сталкивается с той же проблемой,

просто:

сервера :

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String test = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); 
    System.out.print(test); 
    byte[] bImg64 = test.getBytes(); 
    byte[] bImg = Base64.decodeBase64(bImg64); // apache-commons-codec 
    FileOutputStream fos = new FileOutputStream("D:\\img.png"); 
    fos.write(bImg); 
    fos.close(); 
} 

клиент:

var dataURL = canvas.toDataURL("image/png"); 
formdata = dataURL.replace(/^data:image\/(png|jpg);base64,/, ""); 
$.ajax({ 
    url: '../signupcanvasdopost', 
    type: 'POST', 
    data: formdata, 
    processData: false, 
    contentType: "text/html", 
    success: function(data){ 

    } 
}); 
Смежные вопросы