我試圖解析從$.ajax()
發送的多部分/表單數據,並且在服務器端數據進入req.body
而不是req.files
,如express的文檔中所述。如何解析通過ajax請求發送的multipart/form-data。?
我所試圖做的是通過$.ajax
通過nodemailer發送多個圖像文件和表單數據,然後接受它在服務器端和發送這些圖片作爲附件,所以要通過nodemailer送了它我需要能夠讀取,我得到的只是req.body中的數據垃圾,我甚至無法讀取。代碼如下。
客戶端AJAX請求發送功能: -
$('.contact-button').on('click', function(e) {
e.preventDefault();
var data = new FormData();
var filesList = document.getElementById('files');
for (var i = 0; i< filesList.files.length; i ++) {
data.append('file', filesList.files[i]);
}
data.append('messageData', $('#contact-form').serialize());
$.ajax({
url: '/api/contactus/',
data: data,
processData: false,
type: "POST",
contentType: 'multipart/form-data',
mimeType: 'multipart/form-data',
success: function (data) {
console.log("SUCCESS IN AJAX");
console.dir(data);
},
error: function (err) {
console.log('error in AJAX');
console.log(err);
}
});
});
服務器端API處理請求: -
function contactUs (req, res, next) {
console.log("TESTING Body ");
console.dir(req.body);
console.log("TESTING Files");
console.dir(req.files);
var Transport = email.createTransport("SMTP", {
service: "Gmail",
auth: {
user: "[email protected]",
pass: "dumy1234"
}
});
Transport.sendMail({
host : "smtp.gmail.com",
port : "587",
domain : "domain.com",
to : "[email protected]",
from : "[email protected]",
subject : "[Technical Support] "+EmailInfo.Name + " Submitted an Issue!",
reply_to: req.body.Email,
html : "<h2 >Message Details</h2>",
authentication : "login",
username: '[email protected]',
password: 'dumy1234'
}, function (err, result) {
if (err) {
next('email sending failed', err);
} else {
res.json('email sending Success');
}
});
}
所以這兩個問題是如何解析多的數據來通過ajax請求。 秒如何通過nodemailer將多部分數據作爲附件發送。
請記住我已經嘗試使用app.use(express.multipart());
,但是當我將它插入到我的app.js中時,它給了我400 bad request
,甚至沒有執行contactUs
函數。
還在尋找答案 –