Javascript 无法在servlet中捕获和保存图像文件

Javascript 无法在servlet中捕获和保存图像文件,javascript,java,html,servlets,Javascript,Java,Html,Servlets,我遵循下面提供的代码 要求捕获图像并将其存储在本地驱动器中。代码如下 Index.html <div> <video id="videoID" autoplay style="border: 1px solid black;"></video> </div> <div> <canvas id="canvasID" style="border: 1px solid black;">

我遵循下面提供的代码

要求捕获图像并将其存储在本地驱动器中。代码如下

Index.html

<div>
        <video id="videoID" autoplay style="border: 1px solid black;"></video>
    </div>
    <div>
        <canvas id="canvasID" style="border: 1px solid black;"></canvas>
    </div>
    <div>
        <input type="button" value="Take photo" onclick="capture()"
            style="width: 200px; height: 30px;" /> <input type="button"
            value="Send" onclick="send()" style="width: 200px; height: 30px;" />
    </div>
    <script type="text/javascript">
        var video = document.getElementById('videoID');
        var canvas = document.getElementById('canvasID');
        var context = canvas.getContext('2d');
        window.URL = window.URL || window.webkitURL;
        navigator.getUserMedia = navigator.getUserMedia
                || navigator.webkitGetUserMedia || navigator.mozGetUserMedia
                || navigator.msGetUserMedia;

        navigator.getUserMedia({
            video : true
        }, function(stream) {
            video.src = window.URL.createObjectURL(stream);
        }, function(e) {
            console.log('An error happened:', e);
        });
        function capture() {
            context.drawImage(video, 0, 0, canvas.width, canvas.height);
        };
        function send() {
            var imageData = canvas.toDataURL();
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open("POST", "/ImageServlet", true);
            xmlhttp.send(imageData);
        };
    </script>
这里的问题是,我能够捕获图像,但我无法将其保存到本地。请让我知道我哪里出了问题,我怎样才能解决它


谢谢

什么叫“我无法将其保存到本地”呢?是否有例外情况(张贴stacktrace)?你在IDE中调试代码了吗?@JozefChocholacek我在eclipse中没有遇到任何异常。在浏览器中,我看到一些404错误。您是否看到Base64上的PNG图像数据:“行在日志/控制台中?@JozefChocholacek不,它没有打印,我想,servlet没有被调用。我会说您在
xmlhttp.open(“POST”,“/ImageServlet”,true)中缺少了呼叫。
package com.artigo.control;

import java.io.File;
import java.io.FileOutputStream;
import java.io.Reader;
import java.util.Random;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Decoder;

@WebServlet("/ImageServlet")
public class ImageServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        try {
            StringBuffer buffer = new StringBuffer();
            Reader reader = request.getReader();
            int current;
            while ((current = reader.read()) >= 0)
                buffer.append((char) current);
            String data = new String(buffer);
            data = data.substring(data.indexOf(",") + 1);
            System.out.println("PNG image data on Base64: " + data);
            FileOutputStream output = new FileOutputStream(new File(
                    "C:\\Users\\michael\\Desktop\\CapturedImages\\" + new Random().nextInt(100000) + ".png"));
            output.write(new BASE64Decoder().decodeBuffer(data));
            output.flush();
            output.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}