Express文件上传中间件Multer使用详解

2 下载量 147 浏览量 更新于2024-08-30 收藏 66KB PDF 举报
Express 文件上传中间件 Multer 详解 Multer 是 Express 官方推出的中间件,用于处理 Node.js multipart/form-data 请求数据。它基于 busboy 构建,可以高效地处理文件上传,但并不处理 multipart/form-data 之外的用户请求。 Multer 安装非常简单,只需要使用 npm install multer --save 命令即可。 Multer 的使用也非常灵活。它可以将文件上传到服务器的指定目录下,并提供了多种上传方式,例如单文件上传、多文件上传、字段上传等。 在使用 Multer 时,需要创建一个 Multer 实例,并指定文件上传的目标目录。例如: ```javascript var express = require('express'); var multer = require('multer'); var upload = multer({ dest: 'uploads/' }); ``` 然后,在路由处理函数中,可以使用 upload.single() 或 upload.array() 方法来处理文件上传。 例如,使用 upload.single() 方法来上传单个文件: ```javascript app.post('/profile', upload.single('avatar'), function(req, res, next) { // req.file 是 `avatar` 文件 // req.body 对象中是表单中提交的文本字段(如果有) }); ``` 使用 upload.array() 方法来上传多个文件: ```javascript app.post('/photos/upload', upload.array('photos', 12), function(req, res, next) { // req.files 是 `photos` 文件数组 // req.body 对象中是表单中提交的文本字段(如果有) }); ``` 也可以使用 upload.fields() 方法来上传多个文件,并指定每个文件的最大数量: ```javascript var cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]); app.post('/cool-profile', cpUpload, function(req, res, next) { // req.files 是一个对象(String->Array) // req.body 对象中是表单中提交的文本字段(如果有) }); ``` Multer 是一个功能强大且灵活的文件上传中间件,可以满足各种文件上传需求。 Multer 的优点包括: * 高效的文件上传处理 *灵活的上传方式(单文件、多文件、字段上传等) * 支持大文件上传 * 支持多个文件同时上传 * 支持自定义上传目录和文件名 因此,在 Express 项目中使用 Multer 可以使文件上传变得更加方便和高效。