错误:尚未准备好解析。缺少内容类型?

时间:2014-04-17 01:29:07

标签: node.js express

我用curl驾驶node.js / express.js应用程序。 curl命令: curl -X PUT -i -T LICENSE.txt localhost:9981/v1/test/bucket/some-object -s

错误,说内容类型应该存在。内容类型' text / plain'不起作用。实际上,唯一有效的内容类型似乎是:Content-Type: multipart/form-data; boundary=---something

然而!如果我只是放一些文本文件,边界应该是什么? curl命令挂起,因为我认为边界无法弥补。

现在,这个curl命令有效:curl localhost:9981/v1/test/container/some-object -X PUT -F "file=@/opt/nedge/README.md"但这不是我想要的,因为我不想指定file=@

最后一个问题是,正在运行的node.js代码。这是示例busboy,它们是github的第一个例子:https://github.com/piousbox/busboy

我的问题是:如何使用curl指定正确的边界,或者如何使busboy(或整个node.js流)接受除multipart/form-data以外的内容类型。

1 个答案:

答案 0 :(得分:1)

Busboy仅处理multipart / form-data(通常当至少一个字段是文件时)或application / x-www-form-urlencoded请求(无文件)。如果你需要处理一个&text; / text'或者其他类型的请求,然后在常规表单处理中间件之前添加自己的中间件。也许是这样的事情:

// ....

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();
});

// ....