首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为文件上传添加Multer

如何为文件上传添加Multer
EN

Stack Overflow用户
提问于 2019-12-19 20:08:58
回答 1查看 150关注 0票数 0

以下是路由器代码:

代码语言:javascript
复制
router.route('/')
.post(validate(schema.storeLeaves), (req, res) => {
    leavesCtrl.store(req, res);
});

下面是将记录添加到数据库中的函数。上面的代码是调用下面的函数。

代码语言:javascript
复制
var storage =   multer.diskStorage({

destination: function (req, file, callback) {
      callback(null, './uploads');
    },
    filename: function (req, file, callback) {
      callback(null, file.fieldname + '-' + Date.now());
    }
  });

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

export function store(req, res) {
    upload(req,res,function(err) {
        if(err) {
            return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
                error: err
            })
        }

        res.end("File is uploaded");

        const {leave_type, comments, date_from, date_to, blocked_dates} = req.body;

        leaves.forge({
            leave_type, comments, date_from, date_to, blocked_dates
        }).save()
            .then(leaves => res.json({
                    success: true,
                    data: leaves.toJSON()
                })
            )
            .catch(err => res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
                    error: err
                })
            );
    });

}

没有错误,但也没有上传文件。记录正成功保存到数据库中。

EN

回答 1

Stack Overflow用户

发布于 2019-12-21 14:58:45

将Multer添加到应用程序的最简单方法是将其用作中间件。

试试这个:

代码语言:javascript
复制
const fs = require('fs-extra')
const multer = require('multer')
const storage = multer.diskStorage({

  destination: function (req, file, callback) {
    fs.mkdirSync('./uploads')
    callback(null, './uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '-' + Date.now());
  }
});

const upload = multer({ storage: storage })

/* POST TEST Multer */
router.post('/', upload.single('file'), function (req, res, next) {
  res.send(req.file.path);
});

另外,作为一个干净的代码,不要向你的内部函数发送reqres。看看这个node.js best practices

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

https://stackoverflow.com/questions/59409509

复制
相关文章

相似问题

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