javascript - 从网络摄像头拍摄照片并将其保存在服务器上
问题描述
我想拍照,将其发送到服务器并保存在磁盘上。
将照片作为 blob 获取的 JavaScript 函数:
takePhoto() {
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var video = document.getElementById('video');
document.getElementById("snap").addEventListener("click", function() {
context.drawImage(video, 0, 0, 640, 480);
});
let cp = this.contextPath
canvas.toBlob(blob => {
this.saveImage({contextPath: cp, image: blob})
}, 'image/jpeg')
},
在服务器上:
File f = new File("IMAGE.jpeg");
FileOutputStream fos;
try {
fos = new FileOutputStream(f);
f.createNewFile();
fos.write(file);
} catch (IOException e) {
LOGGER.error(e.getMessage());
}
f
我从前端得到的字节数组在哪里
文件已创建,但当我尝试打开它时,任何图像查看器或编辑器都说他们无法打开此文件。例如,油漆:
我究竟做错了什么?
解决方案
Javascript不会将文件直接保存到服务器,所以你只是创建一个空的jpeg文件......你应该将你的base64 blob发布到服务器并在那里写入文件。
推荐阅读
- vue.js - 如何使用vue Element-plus在不同的特定选项卡中修改相同的内容而不影响另一个选项卡
- assembly - MASM 在输入负小数时给出不正确的结果
- javascript - OpenCV JS 中的图像类型在哪里?
- python - 目录中的所有文件未在 python 中显示
- vb.net - VB.NET 如何结束所有 Subs
- python - 从第一个检测词的字符串中检测子字符串
- python-3.x - 如何将对象添加到列表并使用 Class 打印对象?
- rust - Rust:寻找 C memcpy 等价物
- mysql - mysql按最大值选择分组并获取唯一行
- sql-server - 将 Azure Devops 中所有 sprint 的开始和结束日期列表获取到我的数据库中?