如何在Node.js中使用multer上传文件?
我想用MULTER上传图片。 但它不工作。 这里有什么问题?
这段代码在我的路由文件中。
var multer = require('multer'); var upload = multer({ dest: 'public/uploads/' });
这是我的邮政路线。
router.post('/addNewFood', upload.single('avatar'),function (req, res, next) { console.log(req.files); });
确保你安装了这个包
npm install –save multer
你可以尝试下面的方法,在服务器端,在你的路由或控制器文件中configurationmulter:
var multer = require('multer'); var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'public/images/uploads') }, filename: function (req, file, cb) { cb(null, Date.now() + '-' + file.originalname) } }) var upload = multer({ storage: storage });
在存储对象中,目的地是代表file upload的地方。 所以请确保在您的项目目录中创build/ public / images / uploadspath。 否则,您可能需要更改文件path。
另外在存储对象中,文件名表示是什么,上传的文件名是什么。 在这里我添加当前时间与原始文件名称使所有文件名称唯一。
现在在你想要的路由,假设
router.post('/', upload.single('image'), (req, res) => { //here your other task. });
现在你的file upload了。 确保客户端使用相同的名称,在这种情况下,“图像”。
<input type="file" name="image" id="image" class='form-control'>
这是一个单一的file upload程序。 对于多个文件
router.post('/', upload.array(), function (req, res, next) { //your task goes here });
有关更多信息,请查看此链接 。
试试这个,对我有用。 使用快递和节点。
var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'public/uploads/') }, filename: function (req, file, cb) { cb(null, file.originalname) } }); var upload = multer({ storage: storage }).single('avatar'); router.post('/addNewFood', //Your authentication check,// function (req, res, next) { upload(req, res, function(err) { if (err) { res.redirect(req.headers.referer + "/error.html"); return; } if (!req.files) { res.redirect(req.headers.referer + "/error.html"); return; } else { //Implement your own logic if needed. Like moving the file, renaming the file, etc. res.redirect(req.headers.referer); } }); } );