javascript - 如何返回已经被multer filefilter过滤的文件?
问题描述
我正在尝试实现multer
fileFilter 功能并且它可以工作(它确实过滤文件并且文件被上传)但是当我设置文件过滤req.files
时变为空。
const extFilter = function (req, file, cb) {
if(file.originalname.match(/^.*\.(avi|mov|mp4)$/)) cb(null, true)
cb(null, false)
}
const upload = multer({ storage: cloudStorage,
fileFilter: extFilter }).array('file')
upload(req, res, function (err) {
return res.status(200).send(req.files) //returns nothing
})
如果没有设置 fileFilter 选项,该函数将返回上传文件的数组。
有任何想法吗?
解决方案
fileFilter 函数之前缺少返回cb(null, true)
const extFilter = function (req, file, cb) {
if(file.originalname.match(/^.*\.(avi|mov|mp4)$/)) return cb(null, true)
cb(null, false)
}
否则,由于第一个回调,文件被写入磁盘,但req.files
由于第二个回调,没有返回任何内容cb(null, false)
。
推荐阅读
- c# - ListView 项目未完全从 SQLite 数据库加载 [Xamarin.Forms]
- anchor - 使用 php 获取点击的锚文本到引用页面
- python - Tkinter 标签无法显示正确的信息(Win 10 python 3)
- javascript - 如何使用 JavaScript 在一列中制作按钮?
- c# - 附加在 SSMS 中时,用户实例使用路径作为数据库名称
- firebase - Firestore 读取 - App Engine 配额和 Firebase 控制台之间的不一致
- javascript - 如果没有 td 具有 id,则确定单击了哪个 td 元素
- reactjs - 如何在 redux 中收听某些动作
- docker - 如何通信 mysql 和 mysqladmin docker 容器
- swift - 无法访问在全局常量文件中定义的枚举案例的原始值