使用body解析器传递zip文件

7 javascript node.js express body-parser

我的节点应用程序使用快递,在我需要通过邮件消息zip文件发送的应用程序(例如从邮递员到节点服务器),目前我使用身体解析器如下,但我想知道这是否正常?

app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(bodyParser.text({
    type: 'application/text-enriched',
    limit: '10mb'
}));
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是有效的,但我想知道我是否正确使用它...

has*_*sin 5

bodyParse.text()是指string类型的身体。从文档中:

bodyParser.text(选项)

返回将所有主体解析为字符串的中间件...

由于您要上传二进制数据(例如zip文件),因此使用bodyParser.text()您的缓冲区主体转换为utf-8string。因此,您将丢失一些二进制文件数据,并且zip文件可能无法读取。

对于二进制文件,请使用bodyParser.raw(),它将为您提供一个缓冲区req.body,您可以将该缓冲区安全地保存在文件中。

app.use(bodyParser.raw({
    type: 'application/octet-stream',
    limit: '10mb'
}));
Run Code Online (Sandbox Code Playgroud)

对于文件上传,您应该真正看一下multer,它适用于multipart/form-data内容类型。