Показать сообщение отдельно
  #1 (permalink)  
Старый 23.10.2017, 00:41
Новичок на форуме
Отправить личное сообщение для svg121 Посмотреть профиль Найти все сообщения от svg121
 
Регистрация: 23.10.2017
Сообщений: 2

сохрание изображений без использования middleware
Здравствуйте.
Я хочу сохранить на диск картинки, приходящие 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 или просто в строковой переменной?

Заранее огромное спасибо.

Последний раз редактировалось svg121, 23.10.2017 в 00:44.
Ответить с цитированием