7

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

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

顺便说一句,这是可行的,但我想知道我是否正确使用它...

4

1 回答 1

5

bodyParse.text()用于string类型主体。从文档中:

bodyParser.text(选项)

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

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

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

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

对于文件上传,您应该真正查看multer适用于multipart/form-data内容类型的 .

于 2015-10-12T11:39:48.283 回答