Node.js 错误:未准备好进行分析。缺少内容类型?
我正在用curl驱动node.js/express.js应用程序。curl命令:Node.js 错误:未准备好进行分析。缺少内容类型?,node.js,express,Node.js,Express,我正在用curl驱动node.js/express.js应用程序。curl命令: curl-X PUT-i-T LICENSE.txt localhost:9981/v1/test/bucket/some object-s 错误,表示应该存在内容类型。“文本/普通”的内容类型不起作用。事实上,唯一有效的内容类型似乎是:content-type:multipart/formdata;边界=---某物 然而!如果我只放一些文本文件,边界应该是什么?curl命令挂起是因为,我假定,边界无法组成 现在,
curl-X PUT-i-T LICENSE.txt localhost:9981/v1/test/bucket/some object-s
错误,表示应该存在内容类型。“文本/普通”的内容类型不起作用。事实上,唯一有效的内容类型似乎是:content-type:multipart/formdata;边界=---某物
然而!如果我只放一些文本文件,边界应该是什么?curl命令挂起是因为,我假定,边界无法组成
现在,这个curl命令起作用了:curl localhost:9981/v1/test/container/some object-X PUT-F“file=@/opt/nedge/README.md”
但这并不是我想要的,因为我不想指定file=@
最后一个问题是,正在运行的node.js代码。这是busboy的例子,他们github的第一个例子:
我的问题是:如何使用curl指定正确的边界,或者如何使busboy(或node.js streams整体)接受除
多部分/表单数据
之外的内容类型,busboy只处理多部分/表单数据(通常至少有一个字段是文件)或应用程序/x-www-form-urlencoded请求(无文件)。如果您需要处理“文本/普通”或其他类型的请求,那么只需在常规表单处理中间件之前添加您自己的中间件即可。也许是这样的:
// ....
app.use(function(req, res, next) {
if (!req.headers['content-type'])
return next(new Error('Bad request'));
if (req.headers['content-type'].indexOf('text/plain') === 0) {
// read from `req` here with req.read() or req.on('data', ...), etc.
} else
next();
});
// ....
这是否与说“不要使用busboy使用普通旧express请求的流API”相同?如果您希望非表单提交,那么是的,您必须自己处理该请求。