我一直试图将在html画布上渲染的图像提交到nodejs http服务器,但是在接收端解析提交的表单时遇到问题:
ipcMain.on('resizeOK', (event, arg) => {
if(currentImage){
var formData = {
my_field: 'my_value',
// my_file: fs.createReadStream(imagepath), - old way using a local path
my_file: currentImage, //new way using the data from an image canvas
my_width : arg.widthData,
my_height : arg.heightData,
my_quality : arg.quality
};
request.post({url:'http://localhost:8080/resize', formData: formData}, function optionalCallback(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
}
});
// how the image is retrieved from the current canvas
var currentImage = canvas.toDataURL("image/png");
//HTTP server being posted to
if (req.url == '/resize') {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
var output = util.inspect({fields: fields, files: files});
var newWidth = fields['my_width'];
var newHeight = fields['my_height'];
var quality = fields['my_quality'];
res.write('File uploaded to '+output + "");
res.end();
});
}
在阅读了许多文章之后,似乎很多人都试图在纯JavaScript中尝试同一件事,而不是在nodejs中:http://www.nixtu.info/2013/06/how-to-upload-canvas-data-to-server.html
但是这里的示例使用BLOB,而BLOB在Node.js中是直接不可用的。
我现在收到的当前错误是“端后写入”服务器响应,仅在将通过本地图像路径提交的标准图像提交与canvas元素中的uri数据交换之后才发生。
是否有一种简单的方法可以将我的data-uri发布并解析回http nodejs服务器上的可用js对象中?