Получить файл из тела запроса POST NodeJS & Angular - PullRequest
1 голос
/ 23 апреля 2020

Я работаю над приложением MEAN Stack и пытаюсь управлять формой, которая позволяет пользователям загружать файлы при отправке. Похоже, что он работает на стороне клиента, однако, когда я отправляю почтовый запрос от клиента и проверяю тело запроса, файл является пустым объектом. Это всего лишь небольшой файл .docx, поэтому он должен быть хорошим по размеру. Но я не понимаю, почему ничего не получено должным образом, так как запрос проходит без ошибки. У меня сложилось впечатление, что файлы можно отправлять таким образом.

Я что-то упустил?

код от angular service

  sendApplcation(data : any): Observable <any>
  {
    return this.http.post(this.url+ '/careers/api/application', data);
  }

nodejs code

router.post("/api/application", (req, res) => {
  const application = req.body;
  console.log(req.body.file);
  let email = {
    to: `${req.body.email}`,
    from: "Careers@TrueLogistics.ca",
    subject: "Application Recieved",
    text: JSON.stringify(req.body),
    html: `<p> ${JSON.stringify(req.body)} </p>`,
  };
  mailer.sendMail(email, (err, res) => {
    if (err) {
      console.log(err);
    }
  });
  email.to = "mjayfalconi@gmail.com";
  mailer.sendMail(email, (err, res) => {
    if (err) {
      console.log(err);
    }
  });

  res.json("Applcation Submitted Successfully!");
});

1 Ответ

1 голос
/ 23 апреля 2020

Проверьте пакет multer на npm.

Загрузка файла работает немного иначе, чем обычный запрос.

Вы также установите enctype на multipart на входном конце.

Кроме того, я вижу, что вы используете nodemailer для отправки файла в качестве вложения. Прочитайте документацию о приложении. Вы не отправляете файл таким способом.


//Dependencies 
const multer = require('multer');

 //Multer DiskStorage Config 
const diskStorage = multer.diskStorage(
{ destination: 'assets/profile_upload'} );

 //Create Multer Instance
 const upload = multer({ storage: diskStorage });

 //File upload 
//or app.post()

 router.post('/upload-file', upload.single('file'), (req, res) => { 

//The file 
 console.log(req.file)
;});

//Your code: 
app.post('/upload', (req, res) => { ... try doing app.post('/upload' ,upload.single('file'),

Также проверьте этот пост: { ссылка }

Извините за плохое форматирование. У меня есть только доступ к моему телефону в настоящее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...