后面我们会用到文件过滤器,它可以限制可以上传的文件的类型,在这个 upload 目录里面,创建一个文件,放在 utilities 目录里面,名字是 file-filters.ts。
在文件顶部先导入一些东西,导入 Request 还有 Express 来自 express 这个包,下面再导入一个 FileFilterCallback,来自 multer 这个包。
然后我们定义一个制造需要的文件过滤器用的方法,导出一个函数,名字是 createFileFilter ,接收一个 fileTypes 参数,类型是 Array
在这个函数里面,声明一个 allowed ,用一下 fileTypes 参数的 some 方法,提供一个函数参数,有个 type ,返回的值判断一下 type 是否等于 file.mimetype 。
判断一下,如果 allowed ,允许上传,可以执行 callback ,第一个参数是 null,第二个参数是 true。 else ,不然就拒绝上传,执行 callback ,新建一个异常, BadRequestException,异常信息是 不能上传此类型文件。
图像文件过滤器
下面我们用这个 createFileFilter 创建一个允许上传图像文件的过滤器,导出一个函数,名字是 imageFileFilter,用一下 createFileFilter,提供一个数组,里面的项目就是允许上传的文件的类型,添加一个 image/png,一个 image/jpg,一个 image/jpeg 。