我发送带有files/images
的附件formData
以及邮件的内容,然后将它们注入到nodemailer中,如果有帮助,我将multer用作中间件
let fileList: FileList = event.target.files;
if(fileList.length > 0) {
this.formData = new FormData();
for(let i = 0 ; i < fileList.length; i++){
let file: File = fileList[i];
this.formData.append('uploadFile', file, file.name);
}
}
sendData(formData){
let headers = new HttpHeaders();
return this.http.post('http://localhost:3000/mail',formData)
}
sendEmail(formData,email){
let data = { data : email , formData : formData}
return this.http.post('http://localhost:3000/mail',data)
}
在这种情况下, req.files
和req.body.formData
都未定义,
我尝试将formdata
添加到标题中,但我不知道正确的追加/获取方式,或者可能无法实现。
Node.js Part
var storage = multer.diskStorage({
destination : (req,file, callback)=>{
req.body.path = [];
callback(null, './storage');
},
filename : (req, file ,callback)=>{
let filename = Date.now() + '-' +file.originalname;
req.body.path.push(filename);
callback(null, filename);
app.post('/mail',upload.any(),nodemailer);
nodemailer.js
module.exports = (req,res)={
console.log(req.files); X
//Code Irrelevant for this question
}
答案 0 :(得分:1)
为此你必须这样做:
sendEmail(formData,email){
let headers = new HttpHeaders();
formData.append('email', email);
return this.http.post('http://localhost:3000/mail',formData);
}
原因,您必须将表单作为multipart传递,并且您正在尝试 以JSON格式发送数据,因此在您通过之前不会收到任何内容 如上所述。
sendEmail(formData,email){
let data = { data : email , formData : formData}
return this.http.post('http://localhost:3000/mail',data)
}
正如您在函数中看到的那样,您正在发送JSON。