首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >multer文件上传不工作

multer文件上传不工作
EN

Stack Overflow用户
提问于 2016-01-06 20:31:43
回答 2查看 751关注 0票数 0

routes.js

代码语言:javascript
复制
module.exports=function(app, upload){

        var postingsController=require('../controllers/postings.server.controller');

        app.post('/postings', postingsController.savePosting);

    }

controller.js

代码语言:javascript
复制
var multer=require('multer');

    exports.savePosting=function(req, res, next){

      // this diskstorage function is not at all executed
        var storage = multer.diskStorage({
            destination: function (req, file, cb) {
                cb(null, './uploads')
            },
            filename: function (req, file, cb) {
                console.log(file);
                cb(null, file.filename + '.' + 'jpg');
            }
        });

        var upload = multer({ storage: storage });
        upload.single('attachment');

        res.json({ message: "success" });

    }

谁能告诉我到底哪一行上传文件。我是在主快件配置文件中写入multer磁盘存储配置,还是可以在任何地方写入。顺便说一下,我可以看到json的响应,这是从行

EN

回答 2

Stack Overflow用户

发布于 2016-01-06 20:56:36

通常,中间件是在任何实际路由处理程序之外创建和插入的。例如:

routes.js

代码语言:javascript
复制
var multer = require('multer');

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './uploads')
  },
  filename: function (req, file, cb) {
    console.log(file);
    cb(null, file.filename + '.' + 'jpg');
  }
});
var upload = multer({ storage: storage });

module.exports = function(app, upload) {
  var postingsController = require('../controllers/postings.server.controller');

  app.post('/postings',
           upload.single('attachment'),
           postingsController.savePosting);
};

controller.js

代码语言:javascript
复制
exports.savePosting = function(req, res, next) {

  // Use `req.file` to access attachment

  if (req.file)
    res.json({ message: "success" });
  else // no file uploaded
    res.json({ message: "failure" });
};
票数 1
EN

Stack Overflow用户

发布于 2016-01-06 22:20:48

Multer是一种中间件,这意味着在大多数情况下,它是作为参数添加到您的路由中的。因此,实际语法是这样的:

app.post ("/postings", multer ({ ... }), postingsController.savePosting);

在对"/postings“的请求和为您完成所有文件工作的最后一个函数之间调用Multer。然后它将向您提供所有的信息

req.files["fileInputName"]

在下面的中间件中(您的函数也是一个“中间件”)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34642210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档