Javascript 无法在servlet中捕获和保存图像文件
我遵循下面提供的代码 要求捕获图像并将其存储在本地驱动器中。代码如下 Index.htmlJavascript 无法在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;">
<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();
}
}
}