Node.js node/mocha http POST二进制文件(通过正文,而不是表单)以解析错误结束

Node.js node/mocha http POST二进制文件(通过正文,而不是表单)以解析错误结束,node.js,image,http,binary,mocha.js,Node.js,Image,Http,Binary,Mocha.js,这是我的密码 Node.js的文档说我可以发布一个缓冲区。但我总是遇到一个解析错误。我的API正在工作,但测试没有成功 你可能知道,我做错了什么?谢谢你的帮助 it('POST - /api/user-image', function (done) { var file_path_rel = '/user-images/testimage.jpg'; var file_path = path.join(__dirname + file_path_rel); fs.readFile(file_

这是我的密码

Node.js的文档说我可以发布一个缓冲区。但我总是遇到一个解析错误。我的API正在工作,但测试没有成功

你可能知道,我做错了什么?谢谢你的帮助

it('POST - /api/user-image', function (done) {

var file_path_rel = '/user-images/testimage.jpg';
var file_path = path.join(__dirname + file_path_rel);

fs.readFile(file_path, function (err, image) {

  if (err) done(err);

  var buffer = new Buffer(image, "binary");

  var options = {
    host: config.host,
    port: config.port,
    path: '/api/user-image',
    method: 'POST',
    headers: {
      "Authorization": "Bearer " + accessToken,
      "Content-Type": "image/jpeg",
      "Content-Length": buffer.byteLength
    }
  };

  var req = http.request(options, function(res) {
    console.log(res);
  });

  req.write(buffer);
  req.end();
});
这就是错误所在。其他测试(OAuth)通过http工作正常

Error: Parse Error
at Error (native)
at Socket.socketOnData (_http_client.js:305:20)
at readableAddChunk (_stream_readable.js:146:16)
at Socket.Readable.push (_stream_readable.js:110:10)
at TCP.onread (net.js:523:20)

您不需要将image变量转换为Buffer,因为它已经是一个缓冲区(您不指定编码,因此readFile callback data参数是一个缓冲区)。阅读文档了解更多信息


您看到的错误与您发送到服务器的内容无关,而是与服务器发送回您的内容有关。请注意,一旦客户端尝试解析服务器发送的响应,就会发生错误。可能是服务器将内容长度头设置为错误的值?这与您的错误相同。

您不需要将image变量转换为Buffer,因为它已经是一个缓冲区(您不指定编码,因此readFile callback data参数是一个缓冲区)。阅读文档了解更多信息


您看到的错误与您发送到服务器的内容无关,而是与服务器发送回您的内容有关。请注意,一旦客户端尝试解析服务器发送的响应,就会发生错误。可能是服务器将内容长度头设置为错误的值?这家伙在这方面的错误与你相同。

谢谢你的提示!但它仍然没有改变我的问题。我仍然收到这个错误消息。我也这么认为,但与邮递员的请求工作正常。我通过制作一个节点模块而不是使用mocha解决了更多的问题。我得到的块也是一个缓冲区。。。我不知道为什么…谢谢你的提示!但它仍然没有改变我的问题。我仍然收到这个错误消息。我也这么认为,但与邮递员的请求工作正常。我通过制作一个节点模块而不是使用mocha解决了更多的问题。我得到的块也是一个缓冲区。。。我不知道为什么。。。