ExpressJSでenctype="multipart/form-data"
フォームタイプを使用する際によくある問題と考えています。ミドルウェアがない場合、req.body
(またはbodyParser)はこのフォームタイプを処理しません。その結果、私のフィールドにnull
の値をPOST
リクエストで送信しています。私のフォームにはファイルアップロードセクションがありますが、これはmultipart
を使用しており、multer
とmulter-s3
モジュールを使用して、イメージアップロードをs3バケットに処理していますが、multer
や他のモジュールを使用する方法がわかりません私のMysql(Sequelize ORM)データベースにフィールド値を格納します。いずれにしても、multer
がこのタイプのフォームアップロードに使用する適切なモジュールであるかどうか、またモジュール固有の方法でreq.body
を交換することができるドキュメントを指しているかどうかについてのガイダンスはありますか?ExpressJS - フォームを使用してファイルをアップロードするマルチパート原因req.body問題
私のフォームは
<form action="/app/post/create" method="post" enctype="multipart/form-data">
<label for="discovery">Discovery:</label>
<textarea id="discovery-text-field" name="discovery"></textarea>
</br>
<label for="report-link">Link to Report:</label>
<input type="textarea" name="reportLink">
<br />
<label for="file-attachment">File Attachment:</label>
<input type="file" id="file-input" name="fileUpload[]" multiple>
</form>
ルーティングどのように見えるか:
appRoutes.route('app/post/create')
.post(function(req, res){
models.Post.create({
discovery: req.body.discovery,
reportLink: req.body.reportLink,
userId: req.user.userId
}).then(function(){
req.flash('info', 'Post was successfully created.');
res.redirect('/app');
});
});