首页 > 解决方案 > 从网络摄像头拍摄照片并将其保存在服务器上

问题描述

我想拍照,将其发送到服务器并保存在磁盘上。

将照片作为 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我从前端得到的字节数组在哪里

文件已创建,但当我尝试打开它时,任何图像查看器或编辑器都说他们无法打开此文件。例如,油漆:

在此处输入图像描述

我究竟做错了什么?

标签: javascriptjava

解决方案


Javascript不会将文件直接保存到服务器,所以你只是创建一个空的jpeg文件......你应该将你的base64 blob发布到服务器并在那里写入文件。


推荐阅读