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)
}