📅  最后修改于: 2023-12-03 15:11:17.994000             🧑  作者: Mango
在开放式网络环境下,前端与后端之间的通信方式逐渐从简单的同步请求与响应(Synchronous Request/Response)过渡到异步请求与响应(Asynchronous Request/Response),这就需要前端通过异步请求向后端发送数据。
发送数据的方式主要有两种: GET 和 POST。而POST请求中又有两种常用的Content-Type格式:application/json和application/x-www-form-urlencoded格式。如果要通过POST请求发送文件,则需要使用Content-Type格式:multipart/form-data。
在Node.js中,express默认的中间件body-parser只能解析Content-Type为application/x-www-form-urlencoded和application/json格式的数据,不能解析multipart/form-data格式的数据。为了解决这个问题,我们需要使用其他第三方中间件来解析multipart/form-data格式的数据,这里介绍其中一种解析multipart/form-data格式数据的nodejs中间件:multer
。
在使用multer之前需要先安装multer依赖,可以通过下面的命令进行安装:
$ npm install multer --save
使用multer解析multipart/form-data格式数据也比较简单,只需要在需要解析的路由中引入multer并设置相应的参数,例如:
const multer = require('multer')
const express = require('express')
const app = express()
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })
app.post('/upload', upload.single('file'), (req, res) => {
console.log(req.file)
res.send('upload success!')
})
app.listen(8080, () => {
console.log('server start up at localhost:8080')
})
代码解析:
上面的示例只是演示了解析formdata数据的功能,并没有对上传的文件进行任何操作,实际应用需要更复杂的处理逻辑,但是这个示例可以作为学习和使用multer的一个非常基础的模板。
multer具有丰富的配置,在使用multer时可以设置的参数包括:
其他细节可以见官方文档。
使用multer可以方便的解析formdata格式的数据,实现文件上传的功能。multer提供了丰富的配置,可以满足应用的实际需要。因此在Node.js环境下开发文件上传功能时,multer是必不可少的工具之一。