node multer上传中间件,storage使用错误
发布于 8 年前 作者 lgk007 4113 次浏览 来自 问答

multer npm地址:https://www.npmjs.com/package/multer

代码: var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, ‘public/my-uploads’) }, filename: function (req, file, cb) { cb(null, file.fieldname + ‘-’ + Date.now()) } })

var upload = multer({ storage: storage }) router.post(’/upload’,upload.single(‘file’),function(req, res){ console.log(req.file) });

前台使用ajaxFileUpload控件提交图片,请求后变成500。

如果把代码改成下面这样就可以请求成功, var upload = multer({ dest: ‘uploads/’ }) router.post(’/profile’, upload.single(‘avatar’), function (req, res, next) { })

但是我的需求是:一个上传接口,可以接受图片,视频,音频,而去需要保存到不同的目录,保存不同的名字。或者大家有更好的方法?感谢!!

3 回复

destination可以让你自定义保存的文件路径,filename可以让你自定义保存的文件名 两个方法都可以定义一个函数,包含参数req, file, cb req等同于请求的req file等同于传递过来的文件句柄,你可以通过file.mimetype来判断文件格式,然后在destination中cb(null, 保存路径),在filename中cb(null, 文件名)

@zhengnz 请问有方法获取上传上来的图片宽高吗?

回到顶部