Saya sedang mengerjakan aplikasi MEAN Stack dan saya mencoba mengelola formulir yang memungkinkan pengguna mengunggah file saat mereka mengirim. Tampaknya berfungsi di sisi klien, namun ketika saya mengirim permintaan posting dari klien dan memeriksa badan permintaan, file tersebut adalah objek kosong. Ini hanya file .docx kecil jadi ukurannya harus bagus. Tetapi saya tidak mengerti mengapa tidak ada yang diterima dengan benar karena permintaan berjalan tanpa kesalahan. Saya mendapat kesan bahwa file dapat dikirim dengan cara ini.

Apakah saya melewatkan sesuatu?

Kode dari layanan sudut

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

Kode nodejs

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
d0rf47 23 April 2020, 00:31

1 menjawab

Jawaban Terbaik

Lihat paket multer di npm.

Pengunggahan file bekerja sedikit berbeda dari permintaan normal.

Anda juga akan menyetel enctype ke multipart di bagian depan.

Selanjutnya, saya melihat Anda menggunakan nodemailer untuk mengirim file sebagai lampiran. Baca dokumentasi tentang lampiran. Anda tidak mengirim file seperti itu.


//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'),

Lihat juga postingan ini: https://stackoverflow.com/a/61341352/9662626

Maaf untuk format yang buruk. Saya hanya memiliki akses ke telepon saya saat ini.

1
Aviv Lo 22 April 2020, 23:11