Я пытался отправить изображение, отображаемое на холсте html, на http-сервер nodejs, однако у меня возникла проблема с анализом отправленной формы в конце получения:
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, который недоступен непосредственно в nodejs.
Текущая ошибкаТеперь я получил ответ сервера «запись после завершения», который произошел только после обмена стандартным изображением через локальный путь к изображению с данными uri из элемента canvas.
Есть ли простойспособ опубликовать мой data-uri и разобрать его обратно в пригодный для использования объект js на сервере http nodejs?