【Express】文件上传管理 multer 中间件

Multer是Node.js中用于处理文件上传的中间件。它可以帮助你处理文件上传的相关逻辑,如接收和保存上传的文件、限制文件大小、设置文件类型限制等。只能用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。

下面是使用Multer中间件的基本步骤:

  1. 安装multer:在命令行中运行npm install multer来安装multer模块。

  2. 导入multer模块和创建multer实例:在你的Node.js应用程序中,使用require语句导入multer模块,并创建一个multer实例。

javascript 复制代码
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });

上述代码中,我们使用multer的dest属性指定上传文件的保存目录。

  1. 创建路由处理程序:在你的路由处理程序中,使用upload中间件来处理文件上传请求。
javascript 复制代码
app.post('/upload', upload.single('file'), (req, res) => {
  // 文件上传成功后的操作
});

上述代码中,我们使用upload中间件的single方法指定只处理单个文件上传请求。'file'参数是表单中文件输入字段的name属性值。

  1. 处理上传成功的文件:在文件上传成功后的处理程序中,可以通过req.file对象获取上传的文件信息。

Multer 会添加一个 body 对象 以及 file 或 files 对象 到 express 的 request 对象中。 body 对象包含表单的文本域信息,file 或 files 对象包含对象表单上传的文件信息。

javascript 复制代码
app.post('/upload', upload.single('file'), (req, res) => {
  if (req.file) {
    // 文件上传成功
    console.log('File uploaded:', req.file);
  } else {
    // 没有文件上传
    console.log('No file uploaded');
  }
});

上述代码中,req.file对象将包含上传文件的详细信息,如文件名、文件大小、文件路径等。

Multer还提供了其他一些常用方法和选项,例如array方法可以处理多个文件上传请求,fields方法可以处理不同字段名的文件上传请求,limits选项可以设置文件大小限制等。

js 复制代码
// 前端
const params = new FormData()
params.append('avatar', avatar.files[0])
params.append('username', username.value)
const config = {
	headers: {
		"Content-Type":"multipart/form-data"
	}
}
http.post('/api/upload', params, config).then(res => {
	this.imgpath = 'http://localhost:3000' + res.data
})	
相关推荐
ydjs678899-bot1 天前
您的Next.js中间件匹配器配置可能会跳过您认为它保护的路由
开发语言·javascript·中间件
毕业设计7033 天前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
星星落进兜里3 天前
中间件-补充md
中间件
Wx-bishekaifayuan4 天前
springboot桂味美食分享系统40540-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
程序员梅雨4 天前
ZooKeeper面经总结
java·大数据·linux·分布式·后端·zookeeper·中间件
Wx-bishekaifayuan6 天前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
Wx-bishekaifayuan6 天前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Wang's Blog6 天前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP 消息转换器
java·中间件·java-rabbitmq
Wang's Blog6 天前
Java 中间件之 RabbitMQ 快速入门: SpringAMQP WorkQueue 工作队列模型
java·中间件·java-rabbitmq
Wx-bishekaifayuan6 天前
springboot公考微信小程序35511-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游