在控制器中使用multer函数而不是在路由中使用的方法如下:
npm install multer
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/') // 上传文件保存的目标文件夹
},
filename: function (req, file, cb) {
cb(null, file.originalname) // 上传文件保存的文件名
}
});
const upload = multer({ storage: storage });
const uploadFile = (req, res) => {
// 使用upload中间件处理文件上传
upload.single('file')(req, res, function (err) {
if (err instanceof multer.MulterError) {
// 处理multer错误
res.status(500).json({ error: err.message });
} else if (err) {
// 处理其他错误
res.status(500).json({ error: err.message });
} else {
// 文件上传成功
res.status(200).json({ message: 'File uploaded successfully' });
}
});
};
在上述代码中,upload.single('file')
表示只处理名为'file'的单个文件上传。你可以根据需要修改为处理多个文件上传或者其他字段名。
const express = require('express');
const router = express.Router();
const controller = require('./controller');
router.post('/upload', controller.uploadFile);
module.exports = router;
这样,当客户端发送POST请求到/upload
路径时,控制器函数uploadFile
将会被调用,并且使用multer中间件来处理文件上传。
注意:上述代码中的文件上传目标文件夹为'uploads/',你可以根据需要修改为你想要保存上传文件的目标文件夹。
推荐的腾讯云相关产品:腾讯云对象存储(COS)
以上是如何在控制器中使用multer函数而不是在路由中使用的方法,以及推荐的腾讯云相关产品。
领取专属 10元无门槛券
手把手带您无忧上云