使用Javascript/Ajax发送图像并将其保存到MongoDB
我正在尝试使用Ajax保存一个配置文件来发送数据。我可以在没有图像时保存,但问题是配置文件有图像,我希望使用与发送其他信息相同的Ajax函数发送图像。如果我不这样做,我必须创建另一个带有“PUT”请求的不同Ajax函数来修改文档并将图像保存在其中 是否有办法将图像作为Json和其他信息(如姓名和电子邮件)一起发送? 这是我的HTML:使用Javascript/Ajax发送图像并将其保存到MongoDB,javascript,ajax,node.js,mongodb,mongoose,Javascript,Ajax,Node.js,Mongodb,Mongoose,我正在尝试使用Ajax保存一个配置文件来发送数据。我可以在没有图像时保存,但问题是配置文件有图像,我希望使用与发送其他信息相同的Ajax函数发送图像。如果我不这样做,我必须创建另一个带有“PUT”请求的不同Ajax函数来修改文档并将图像保存在其中 是否有办法将图像作为Json和其他信息(如姓名和电子邮件)一起发送? 这是我的HTML: <input class="teamName" type="text" id="teamName" name="teamName" size="25" m
<input class="teamName" type="text" id="teamName" name="teamName" size="25" maxlength="60" value="Team Name">
<input class="companyName" type="text" id="companyName" name="companyName" size="25" maxlength= "60" value="Company Name">
<input class="teamDescription" type="text" id="teamDescription" name="teamDescription" size="25" maxlength= "60" value="Team Description">
<input class= "email" type="text" id="email" name="email" size="25" maxlength= "60" value="emails">
<input class="charityID" type="text" id="charityID" name="charityID" size ="25" maxlength="60">
<input class="upload-area" id="upload-area" type="file" size="150">
这就是我在NodeJs中接收数据并保存在数据库中的方式:
router.post('/', function (req, res){
//TEAM INFO
var sessionID = req.query.sessionID // to get variable form URL is "req.query"
var team = req.body;
var teamName = team.teamName;
var teamDescription = team.teamDescription;
var charityID = team.charityID;
var teamLink = team.teamLink;
var image = team.profileImage;
sessionOBJ.isAuthorized(sessionID, function(sessionID){
log.d("Checking session to save team", sessionID);
var adminID = sessionID.userID;
var newTeam = new teamModel({
teamName: teamName,
teamDescription: teamDescription,
teamAdminID: adminID,
teamLink: teamLink,
charityID: charityID,
image: {
data:fs.readFileSync(image),
contentType:image.type
}
});
newTeam.save(function(err, team){
if(err) return console.error(err);
res.send({"status" : "Created", "teamID" : team._id, "teamAdminID":team.teamAdminID });
log.d("Created Team ID", team._id)
log.d("XXXXXXX XXXXXX XXXXXXX Team Saved inside save method",team);
});//end save new team
});//end is Authorized
});
上面的代码不起作用
如何使用javascript和Ajax发送图像文件?我可以使用相同的Ajax请求来实现这一点吗
提前谢谢
router.post('/', function (req, res){
//TEAM INFO
var sessionID = req.query.sessionID // to get variable form URL is "req.query"
var team = req.body;
var teamName = team.teamName;
var teamDescription = team.teamDescription;
var charityID = team.charityID;
var teamLink = team.teamLink;
var image = team.profileImage;
sessionOBJ.isAuthorized(sessionID, function(sessionID){
log.d("Checking session to save team", sessionID);
var adminID = sessionID.userID;
var newTeam = new teamModel({
teamName: teamName,
teamDescription: teamDescription,
teamAdminID: adminID,
teamLink: teamLink,
charityID: charityID,
image: {
data:fs.readFileSync(image),
contentType:image.type
}
});
newTeam.save(function(err, team){
if(err) return console.error(err);
res.send({"status" : "Created", "teamID" : team._id, "teamAdminID":team.teamAdminID });
log.d("Created Team ID", team._id)
log.d("XXXXXXX XXXXXX XXXXXXX Team Saved inside save method",team);
});//end save new team
});//end is Authorized
});