Javascript 如何将附加数据与表单数据一起以角度发送

Javascript 如何将附加数据与表单数据一起以角度发送,javascript,node.js,angular,Javascript,Node.js,Angular,我将附带的文件/图像和表单数据一起发送到后端,以及邮件内容,然后将它们注入NodeEmailer,如果有帮助,我将使用multer作为中间件 组件技术 ts(不工作,需要执行此操作) 在本例中,req.files和req.body.formData都未定义, 我尝试将formdata附加到标题中,但我不知道附加/获取的正确方法,或者可能无法执行 Node.js部分 var storage = multer.diskStorage({ destination : (req,file, ca

我将附带的
文件/图像
表单数据
一起发送到后端,以及邮件内容,然后将它们注入NodeEmailer,如果有帮助,我将使用multer作为中间件

组件技术 ts(不工作,需要执行此操作) 在本例中,
req.files
req.body.formData
都未定义, 我尝试将
formdata
附加到标题中,但我不知道附加/获取的正确方法,或者可能无法执行

Node.js部分

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
}

为此,您必须这样做:

sendEmail(formData,email){
    let headers = new HttpHeaders();
    formData.append('email', email);
    return this.http.post('http://localhost:3000/mail',formData);
}
原因是,您必须将表单作为多部分传递,并且您正在尝试 将数据作为JSON发送,因此在您通过 整个事情如上所述



正如您在函数中看到的,您正在发送JSON。

尝试
req.data.formData.files
req.formData.files
@UsmanRana那么我是否应该像案例2一样保持服务?是的。可能是。@UsmanRana节点抛出错误:无法在两种情况下读取未定义的属性“files”和“data”扫描您发布的
nodejs
代码?谢谢,它工作得很好,但我收到了带有req.files的附件和带有req.body的电子邮件数据为什么?当我使用相同的方法formData.append时?@MayankSingh,太好了,你可以阅读我更新的答案,你就会明白了。
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);
module.exports = (req,res)={
  console.log(req.files);  X
//Code Irrelevant for this question
}
sendEmail(formData,email){
    let headers = new HttpHeaders();
    formData.append('email', email);
    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)
}