Как сохранить картинку от клиента на сервер?

никак не могу сохранить файл от клиента на сервер NodeJS. Пытаюсь использовать это:

function operatePOST(req, res){
  var body = '';
  var filePath = __dirname +req.url;
  req.on('data', function(data) {
    body+=data;
  });
  req.on('end', function (){
    fs.appendFile(filePath, body, function() {
      console.log(body);
      res.end();
    });
  });
}

Программа сохраняет картинку, но при ее открытии возникает сообщение: "Похоже формат этого файла не поддерживается." Я пытался найти решение проблемы, но везде мне предлагают использовать Express, multer и еще некоторые фреймворки, но мне нужна реализация без использования сторонних библиотек. Помогите правильно сохранить картинку.

на клиенте отправляю так:

const xhr = new XMLHttpRequest();
xhr.open('POST', fileUrl);
xhr.send(form.file.files[0]);

Ответы (1 шт):

Автор решения: 2ip

Решил проблему следующим образом:

function operatePOST(req, res){
  const writeStream = fs.createWriteStream(__dirname + req.url, {flags: 'wx'});
  req.pipe(writeStream)
  .on('error', err => {
    if (err.code === 'EEXIST') {
      res.statusCode = 409;
      res.end('EEXIST');
      return;
    }})
  .on('close', () => {
    res.statusCode = 201;
    res.end('close');
  })
  req.on('close', () => {
    if (res.finished) return;
  });
}
→ Ссылка