解析'多部分数据'使用express
parsing 'multipart-data' using express
我遇到了从客户端解析数据的奇怪问题。
我发现所有的"boolean true"都被转换为"string true",对于"undefined"也是如此,因此我不能在这些字段上做"if"。
这是我所拥有的:
var bodyParser = require('body-parser');
var app = express();
app.post('/someroute',function(req,res,next){
console.log(typeof req.someBooleanValue);
});
我总是得到"string",我希望控制台中有布尔值,因为这是客户端发送的。
现在,如果内容类型设置为"application/json",它就可以正常工作
我知道body解析器不适用于"multipart"内容类型。但我有什么选择?我尝试过多党制和多党制。但在使用它们进行解析后,我仍然将字段作为字符串。
除了编写一个小实用程序来检查内容类型,然后使用JSON.parse("字段")或类似的东西对引号进行一些丑陋的剥离之外,没有其他方法可以处理这个问题吗?
我正在使用Busboy作为带有express.js的REST应用程序,以处理多部分/表单数据中的文件上传,它运行良好。
项目页面上提供了示例。只是一个警告,如果您需要处理文件上传,请确保您有一个用于保存文件的WriteableStream的'finish'
事件的侦听器,并且您不完全依赖于busboy本身引发的'finish'
事件。
它(在某种程度上)取决于客户端。
通过<form>
元素(通过浏览器)上传的AFAIK、multipart/form-data
部分没有类型化:它们要么包含文本(字符串)内容(用于"常规"字段),要么包含二进制内容(用于"文件"字段)。
换句话说,服务器端解析器将为您提供的所有字段都将是字符串。如果没有一些显式代码,multer/partiparty/etc就不知道true
的字符串值是布尔值,所以你必须根据每个字段应该包含的内容,自己执行一些转换/强制转换。
如果您使用的是像cURL这样的CLI客户端,则可以将JSON"文件"作为单独的部分上传(此处对此进行了解释)。您仍然需要对传入数据调用JSON.parse()
,因为它仍将作为字符串传递。
- 使用Express捕获参数
- 发送json对象或使用express路由呈现视图
- 使用express.具有多个url和可选参数的Router()
- 使用Express和Node将要由Jade渲染的值传回
- 使用Express路由React服务器端
- 使用Express筛选HTTP响应
- 如何使用Express'正确加载图像;s的静态中间件
- 如何在不使用 express 的情况下在 nodejs 中创建会话
- 如何使用 express.js 和 ember-cli 实现节点.js后端服务器
- 使用Express访问Node.js中的模型
- Node JS会话错误:不赞成使用express会话
- 无法使用express加载静态文件
- 如何使用express node.js打印到html
- 如何在Keystone.js项目中使用Express.js中间件
- 如何使用express/mongoose和客户端JS将HTML类发布到mongoDB集合中
- req.user在使用express服务器passport.js进行twitter身份验证后未定义
- 如何迭代数据为谷歌地图创建标记(使用express/jquery/ajax)目前正在获取SyntaxError
- websocket可以使用http模块,但不能使用express(node.js)
- Node js async.series无法使用Express应用程序--响应发生得太早
- 使用Express渲染Base64 PNG