Как сохранить картинку от клиента на сервер?
никак не могу сохранить файл от клиента на сервер 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;
});
}