получение данных большого двоичного объекта из запроса данных формы в ExpressJS

#node.js #ajax #rest #express

#node.js #ajax #остальное #экспресс

Вопрос:

Прямо сейчас я отправляю файл на мой сервер expressjs, используя в качестве formdata, используя ajax.

     const fileChooser = document.getElementById('config-file-upload');
    const file = fileChooser.files[0];
    
    let formData = new FormData();
    formData.append('file', file);

    $.ajax({
        url: baseURL   "upload-doc",
        type: 'POST',
        data: formData,
        processData: false,
        contentType: 'multipart/form-data'
    });
  

Это отлично отправляет данные на мой сервер, но когда я отправляю файл на сервер, он всегда возвращается неопределенным.

     app.post('/upload-doc', (req, res) => {
        console.log(req.body);
    });
  

Я пробовал использовать библиотеки, такие как multer, но я все еще получаю undefined при попытке доступа к файлам

    const upload = multer({dest: 'tmp/uploads'});

   app.post('upload-doc', upload.any(), (req, res) => {
      console.log(req.files);
   });
  

Спасибо за помощь.

Комментарии:

1. Сохраняйте multer способ и используйте const file = $("config-file-upload")[0].files[0]; вместо const file = fileChooser.files[0];

2. @hoangdv После того, как я это сделал, я столкнулся с ошибкой, в которой говорилось, что граница не найдена. Из того, что я видел в других сообщениях stackoverflow, удаление заголовка content type должно исправить это, но после этого я все еще получаю undefined. Я также попытался установить в заголовке типа контента значение ‘application / x-www-form-urlencoded’, но тоже безуспешно. Может ли это быть связано с кодировкой в заголовках или, может быть, с какой-то другой проблемой кодировки символов?