web-dev-qa-db-ja.com

multerでファイルをアップロードするときにreq.filesが未定義

画像をアップロードするNode.jsアプリケーションをExpress.js 4で構築しようとしています。 multerモジュールを使用することにしましたが、req.files経由でアップロードされたファイルにアクセスできません。ここに私が使用しているコードがあります。私は、関連があると思われる部分に限定しました。

翡翠コード:

form(method="POST", action="createPost", enctype="multipart/form-data")
        input(type="file", name="photo")
        br
        input(type="submit" value="upload")

routes/admin.js:

var express = require('express');
var multer = require('multer');
var router = express.Router();
var upload = multer({dest: './uploads/'});

router.post('/createPost', upload.single('photo'), function(req, res, next) {
    console.log('files:', req.files);
    console.log('body:', req.body);
    // more code
}

出力:

files: undefined
body: {}

ファイルはuploadsフォルダーに格納されていますが、req.filesの情報にアクセスできません。誰か助けてもらえますか?

13
arne.z

upload.single()を使用する場合、multerのドキュメントに従って、結果のファイルは_req.file_ではなく_req.files_にある必要があります。例 こちらのドキュメント を参照してください。

_app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
})
_

そして、これがupload.single()の実際のドキュメントです。

。single(fieldname)

Fieldnameという名前の単一のファイルを受け入れます。単一のファイルはreq.fileに格納されます。

16
jfriend00