Здравствуйте.
Я хочу сохранить на диск картинки, приходящие POST запросом, без использования middleware like multer, busboy и тд. Хочу разобраться в каком формате приходят каринки на сервер, и как их распарсивать прежде чем сохранять на диск.
На странице есть форма, которая отправляет текстовые поля.
Сами изображения я отправляю по одной при клике на Upload.
Для отправки изображения формирую POST запрос, в теле которого я и передаю изображение.
form(method='POST' action='/building/add' enctype='multipart/form-data')
var uploaded_data = new FormData();
uploaded_data.append("foto", btn_uploadPreviews[0].files[img_index]);
// где btn_uploadPreviews = $(input[type="file"])
// и btn_uploadPreviews[0].files - массив загруженных файлов через
проводник
// btn_uploadPreviews[0].files[img_index] - берём конкретное изображение по индексу
$.ajax({
type: 'POST',
url: '/building/add',
data: uploaded_data,
processData: false,
contentType: false,
success: function(data){
console.log(data);
},
error: function(){
console.log('error');
}
});
На серваке, проблема состоит в том, что картинка приходит в виде бинарных данных, среди которых есть такие данные как ------WebKitFormBoundaryAv4xbzebt3AYoGsv
И если вывести в консоль кусок данных через chunk.toString(),
то картинка выводится как символы + метаданные ------WebKitFormBoundaryAv4xbzebt3AYoGsv, Content-Type и тд.
subapp.post('/building/add', function(req, res){
var newImage = fs.createWriteStream('uploads/newImage.jpg');
console.log(req.headers);
var data = ' ';
req.on('data', function(chunk){
data += chunk;
console.log(chunk.toString());
});
req.on('end', function(){
res.send(data);
});
});
https://drive.google.com/file/d/0B7r...ew?usp=sharing
https://drive.google.com/file/d/0B7r...ew?usp=sharing
Как можно удалить эти метаданные перед сохранением картинки?
И в каком формате должна находится картинка чтоб удалять эти метаданные. Нужно ли кусок считываемых данных хранить в переменной Buffer или просто в строковой переменной?
Заранее огромное спасибо.