Node.jsのサーバ上でファイルを受け取る処理が必要になったので、調べながらゴリゴリ書いていたらつまづいたので、ここにまとめておく。
環境構築
npm install multer --save
ここはいつも通りなのですんなりと終わらせた。
サーバ側実装
upload.js
...
const multer = require("multer");
...
router.post('/upload', function(req, res, next) {
let upload = multer({ dest: '../tmp/' }).single('file');
upload(req, res, function(err) {
dataProcess(req)
.then(function(){
...
})
.catch(function(error){
...
});
});
});
ここで数時間つまづいた。
何が問題だったの?
どこが原因だったかといえばここ↓
let upload = multer({ dest: '../tmp/' }).single('file');
いろいろ調べたところ、1ファイルのときは「.single()」を使うというところまでは分かったのだけども、その引数に指定されているものがどういうものなのかがわからなかった。
実はこれ、HTML側からリクエストするファイルフィールドのパラメータ名だったのだ。
ここがHTML側と一致していなかったため、サーバ側でファイルを正しく受け取れていなかったのが今回のつまづきポイントだった。
またひとつかしこくなった!