サーバー側から送信されたマルチパート/フォームデータを解析しようとしていますが、エクスプレスのドキュメントに記載されているように$.ajax()
、サーバー側のデータが入ってきreq.body
ません。req.files
私がやろうとしているのは、複数の画像ファイルとフォームデータを送信$.ajax
し、サーバー側で受信し、それらの画像を nodemailer を介して添付ファイルとして送信することです。したがって、 nodemailer を介して送信するには、それを読み取ることができる必要があります。 get は 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: "dummy@dummy.com",
pass: "dumy1234"
}
});
Transport.sendMail({
host : "smtp.gmail.com",
port : "587",
domain : "domain.com",
to : "dummy@dummy.com",
from : "dummy@dummy.com",
subject : "[Technical Support] "+EmailInfo.Name + " Submitted an Issue!",
reply_to: req.body.Email,
html : "<h2 >Message Details</h2>",
authentication : "login",
username: 'dummy@dummy.com',
password: 'dumy1234'
}, function (err, result) {
if (err) {
next('email sending failed', err);
} else {
res.json('email sending Success');
}
});
}
したがって、2 つの質問は、ajax リクエストを介して送信されるマルチパート データを解析する方法です。2番目 nodemailerを介して添付ファイルとしてマルチパートデータを送信する方法.?
私はすでに を使用しようとしましapp.use(express.multipart());
たが、それを app.js に挿入すると、関数400 bad request
を実行することさえできませんでしたcontactUs
。