Как в Node.js принять файл?

Добрый день! Я хочу, чтобы пользователь мог обновлять свою фотографию профиля, для работы с файлами стоит multer для их загрузки fs, но проблема в том, что у меня не получается даже корректно принять файл с клиента

HTML форма
<div id="img_preview" style="background-image: url();"></div>
<input type="file" name="img" class="file_hidden" id="change_img" readonly="" accept="image/*" onchange="Edit.encodeImageFileAsURL(this)">
<label for="change_img">Сменить фото</label>


JS
var file = document.querySelector("#change_img").files[0], form;
form = new FormData();
form.append("photo", file);
fetch('/upload', {
    method: 'post',
    body: form
}).then(function(res) {
    res.json().then(function(data) {
        if (data.status != "err") {
           //  successful response handler
        }
    });
}).catch(() => alert('Превышено время ожидание запроса!'));


NodeJS
app.use(multer({dest: __dirname + '/static/upload'}).single());

app.post('/upload', function(request, response) {
    if (!request.body) return response.sendStatus(400);
    console.log(request.body) // print undefined
    console.log(request.file) // print {}
});

Заранее спасибо!
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
Обратите внимание, что в form.append() нужно передавать три параметра, а не два.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы