Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 通过ajax将带有图像和json的Formdata发送到服务器端_Jquery_Node.js_Ajax_Multer_Body Parser - Fatal编程技术网

Jquery 通过ajax将带有图像和json的Formdata发送到服务器端

Jquery 通过ajax将带有图像和json的Formdata发送到服务器端,jquery,node.js,ajax,multer,body-parser,Jquery,Node.js,Ajax,Multer,Body Parser,我需要从客户端second ajax发送一个图像,同时从first ajax发送textjson 在服务器端,我将图像发送到cloudinary(multer),并使用NodeEmailer将消息发送到电子邮件text[0]。电子邮件。但是由于有多个ajax调用,我无法将图像url发送到电子邮件 html文件,其中我从输入中获取值(第一个ajax),并获取图像(第二个ajax) 在客户端,我将图像和textjson发送到服务器端(ajax调用) $(“.submit_2”)。在(“单击”,函

我需要从客户端
second ajax
发送一个图像,同时从
first ajax
发送
text
json

在服务器端,我将图像发送到cloudinary(multer),并使用NodeEmailer将消息发送到电子邮件
text[0]。电子邮件
。但是由于有多个ajax调用,我无法将图像url发送到电子邮件

html文件,其中我从输入中获取值
(第一个ajax)
,并获取图像
(第二个ajax)


在客户端,我将图像和
text
json发送到服务器端(ajax调用)

$(“.submit_2”)。在(“单击”,函数(){
文本[0]。名称=$.trim($(“#名称”).val();
text[0]。phone=$.trim($(“#phone”).val();
文本[0]。公司=$.trim($(“#公司”).val();
文本[0]。电子邮件=$.trim($(“#电子邮件”).val();
text[0]。text_-in=$.trim($(“#text_-in”).val();
设formdata=new formdata();
formdata.append(“image”,$(“#image”)[0]。文件[0]);
如果($(“#表格2”).valid()){
$.ajax({//第一个ajax)
网址:“/bags”,
类型:“POST”,
数据类型:“json”,
contentType:“应用程序/json”,
数据:JSON.stringify(文本),
processData:false,
跨域:是的,
});
$.ajax({//second ajax
网址:“/bags”,
类型:“POST”,
contentType:false,
数据:formdata,
processData:false,
跨域:是的,
});
});
});
服务器

const express=require(“express”);
const bodyParser=require(“body parser”);
const router=express.router();
const nodemailer=require(“nodemailer”);
const cloudinary=require(“cloudinary”).v2;
const{CloudinaryStorage}=require(“multer-storage-cloudinary”);
const multer=要求(“multer”);
use(bodyParser.json());
use(bodyParser.urlencoded({extended:true}));
cloudinary.config({
云名称:“云名称”,
api_密钥:“api_密钥”,
api_机密:“api_机密”,
});
常量文件过滤器=(请求、文件、cb)=>{
如果(
file.mimetype==“图像/png”||
file.mimetype===“image/jpg”||
file.mimetype===“图像/jpeg”
) {
cb(null,true);
}否则{
cb(空,假);
}
};
const storage=新的CloudinaryStorage({
阴云密布,
});
const upload=multer({storage:storage,fileFilter});
让transporter=nodeEmailer.createTransport({
主持人:“主持人”,
港口:465,
安全:是的,
认证:{
用户:“用户”,
通行证:“通行证”,
},
});
router.post(“/bags”)、upload.single(“图像”)、函数(请求、恢复、下一步){
控制台日志(请求主体);
console.log(请求文件);
const email=req.body[0]。电子邮件,
常量mailData1={
发件人:{
姓名:“发件人”,
地址:“myemail”,
},
致:电邮:,
主题:“文本”,
html:“消息”,
附件:req.file.path,
};
transporter.sendMail(mailData,(错误,信息)=>{
如果(错误){
返回console.log(错误);
}
res.status(200).send({message:“Mail send”,message_id:info.messageId});
});
transporter.sendMail(mailData1);
});
单击submit之后,在控制台中我有两条消息

控制台

//第一条消息
[//req.body
{
名称:“sd”,
公司:'123',
电话:12321312,
电邮:'123@mail.ru',
文本“”中的“”项,
}
]
未定义//req.file
//第二条信息
[对象:空原型]//req.body
{//req.file
字段名:“图像”,
原始名称:“fdsf.png”,
编码:“7bit”,
mimetype:'image/png',
路径:'https://res.cloudinary.com/dbgqnecjp/image/upload/v1606067372/lfvr9xxarnbegsp2ins7.png',
尺码:3299,
文件名:“lfvr9xxarnbegsp2ins7”
}
formdata.append(“text”,JSON.stringify(text))和服务器上解析的
req.body.text
。这对我很有用