var storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, '/tmp/my-uploads') }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now()) } }) var upload = multer({ storage: storage })
.diskStorage()方法提供了文件存储位置控制权限,该方法接收一个对象参数,其中包含两destination和filename两个属性。
destination用于设置文件的存储目录,可以是一个函数或字符串。若未提供该参数,将使用系统的临时目录。
filename用于设置文件名。若未提供该参数,将使用一个随机字符串,且文件名中不包含扩展名。
.memoryStorage()与内存存储
内存存储引擎会以Buffer的形式将文件保存在内存中。该方法没有任何参数:
var storage = multer.memoryStorage() var upload = multer({ storage: storage })
limits - 文件尺寸
该选项用于设置文件尺寸,Multer 会将这个对象传递至busboy中。limits对象中可以包含以下可选值:
fieldNameSize - 字段名最大尺寸。默认值:100 bytes
fieldSize - 字段值最大尺寸。默认值:1MB
fields - 非文件字段的最大数量。默认值:Infinity
fileSize - multipart 表单中,文件的最大尺寸。默认值:Infinity
files - multipart 表单中,文件最大数量。默认值:Infinity
parts - multipart 表单中,最大组件(fields+files)数量。默认值:Infinity
headerPairs - 默认值:2000
fileFilter - 文件筛选
fileFilter用于控制要哪些文件是可接受的,哪些是要被拒绝的。使用形式如下:
function fileFilter (req, file, cb) { // 需要调用回调函数 `cb`, // 并在第二个参数中传入一个布尔值,用于指示文件是否可接受 // 如果要拒绝文件,上传则传入 `false`。如: cb(null, false) // 如果接受上传文件,则传入 `true`。如: cb(null, true) // 出错后,可以在第一个参数中传入一个错误: cb(new Error('I don\'t have a clue!')) }