如何将捕获的照片(从浏览器 - 画布)上传到Node服务器?
问题的原因是用户想要将通过浏览器中的画布捕获的照片上传到Node服务器。为了解决这个问题,用户需要在客户端和服务器端分别编写代码。
在客户端,用户可以使用以下代码将图片转换为Base64格式并将其发送到服务器:
function covertImage() { var image = document.getElementById("canvas").toDataURL("image/png"); sendMessage(image); } //Sending image data to server function sendMessage(image){ var msg = JSON.stringify(image); var xhr = new XMLHttpRequest(); xhr.open('POST', true); xhr.send(msg); alert('file is saved'); }
在服务器端,用户可以使用以下代码接收来自客户端的图片数据,并将其保存到服务器的文件夹中:
http.createServer(function (request, response) { var post=''; if (request.method == 'POST') { var body = ''; request.on('data', function (data) { body += data; }); request.on('end', function () { post = JSON.parse(body); var data = post.replace(/^data:image\/\w+;base64,/, ""); var buf = Buffer.from(data, 'base64'); writeFileToSystem(buf); }); } function writeFileToSystem(buf) { fs.writeFile("images/image.png", buf, function(err) { console.log("The file was saved!"); }); } }
通过以上代码,用户可以在客户端将捕获的照片转换为Base64格式并发送到服务器,然后服务器将接收到的数据解析并保存为图片文件。这样,用户就成功地将从浏览器画布中捕获的照片上传到了Node服务器上。