我使用快递的节点应用程序,在我需要通过帖子消息 zip文件发送的应用程序(例如从邮递员到节点服务器),目前我使用身体解析器如下但我想知道这是否可以?
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(bodyParser.text({
type: 'application/text-enriched',
limit: '10mb'
}));
顺便说一下,这是有效的,但我想知道我是否正确使用它......
答案 0 :(得分:5)
bodyParse.text()
适用于string
类型的正文。来自文档:
<强> bodyParser.text(选项)强>
返回以字符串形式解析所有实体的中间件......
因为您要使用bodyParser.text()
convert your buffer body to utf-8
string上传二进制数据(例如zip文件)。因此,您将丢失一些二进制文件的数据,并且zip文件可能无法读取。
对于二进制文件,使用bodyParser.raw()
,它将在req.body
中为您提供缓冲区,您可以安全地将该缓冲区保存在文件中。
app.use(bodyParser.raw({
type: 'application/octet-stream',
limit: '10mb'
}));
对于文件上传,您应该真正关注适用于multipart/form-data
内容类型的multer
。