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

时间:2015-12-13 17:16:36

标签: 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
     })

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

3 个答案:

答案 0 :(得分:12)

好的,我明白了。

我可以用

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){
       [...]
    })

答案 1 :(得分:4)

对我而言,它也有效。

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

router.post("/upload", upload.single("foo-bar"), function(req, res) {
  ...
}

答案 2 :(得分:0)

就我而言,我尝试了所有方法,但均无法解决,但我找到了解决方法

app.js

const multer  = require('multer');
const storage =  {
    dest:  'UPLOAD/PATH/'
}
const upload = multer(storage);
app.post('/myupload', upload.single('FILE_NAME'), (req,res)=>{
  res.send('Upload');
});

我用 express.Router()尝试了很多次,但是它不起作用,这就是为什么我在app.js中编写代码并重定向到另一个文件的原因。