在Express Router中使用multer进行文件上传

luk*_*293 12 javascript node.js express multer

我得到了一个使用node.js和Express构建的REST-API.

现在我需要一个文件上传端点,它接受上传的文件并处理它们.

我正在使用Express Router和一些身份验证中间件.

server.js(摘录)

var router = express.Router()
app.use("/api", router)

[...]
router.use(function(req, res, next) {
    //Authentification middleware
    [...]
    next()
})

router.route("/upload")
     .post(function(req, res){
        //upload logic
     })
Run Code Online (Sandbox Code Playgroud)

如何使用multer将上传的文件作为req.file(或左右)提供,但仅限于/ api/upload和authed用户?

luk*_*293 15

好,我知道了.

我可以用

var multer = require("multer")
var upload = multer({ dest: "some/path" })

[...]

router.route("/upload")
    /* replace foo-bar with your form field-name */
    .post(upload.single("foo-bar"), function(req, res){
       [...]
    })
Run Code Online (Sandbox Code Playgroud)


Pei*_*Pei 6

对我来说,它也起作用。

var multer = require("multer")
var upload = multer({ dest: "path" })

router.post("/upload", upload.single("foo-bar"), function(req, res) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

  • 我花了很多时间试图让这项工作成功。`var uploadMulter = multer({ dest: 目录 }); router.post('/upload', uploadMulter.single("html_input_element_name"), function(req,res, next) {...` 。 Multer 存储库中有一行 `In aaverage web app, only dest might是必需的,`。不要相信那句话...您还需要`.single(fieldname)`调用...非常感谢... (2认同)