AngularJS:ArrayBuffer的POST请求有效负载为空

AngularJS:ArrayBuffer的POST请求有效负载为空,angularjs,angularjs-http,Angularjs,Angularjs Http,我尝试使用POST发送一些字节,使用ArrayBuffer,但请求负载似乎总是空的。下面是一些代码片段: var buffer = new ArrayBuffer(10); var dataView = new DataView(buffer); dataView.setInt32(0, 0x1234ABCD); var request = { method: 'POST', url: 'url', headers: {'Content-Type': 'application/oct

我尝试使用POST发送一些字节,使用
ArrayBuffer
,但请求负载似乎总是空的。下面是一些代码片段:

var buffer = new ArrayBuffer(10);
var dataView = new DataView(buffer);
dataView.setInt32(0, 0x1234ABCD);
var request = {
  method: 'POST',
  url: 'url',
  headers: {'Content-Type': 'application/octet-stream'},
  data: buffer,
  responseType: 'arraybuffer'
};
$http(request)
  .success(function(data, status, headers, config) { ... })
  .error(function(data, status, headers, config) { ... });

正如我所评论的,要发送ArrayBuffer,您需要直接使用XHR2(AngularJs似乎不支持它)。下面是一些如何操作的代码:

var buffer = new ArrayBuffer(10);
var dataView = new DataView(buffer);
dataView.setInt32(0, 0x1234ABCD);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'url', true);
xhr.onload = function(e) {
  console.log('data received');
};
xhr.send(buffer);

关于XHR2的更多细节:,希望这能对同样困惑的人有所帮助:)

正如我所评论的,要发送ArrayBuffer,您需要直接使用XHR2(AngularJs似乎不支持它)。下面是一些如何操作的代码:

var buffer = new ArrayBuffer(10);
var dataView = new DataView(buffer);
dataView.setInt32(0, 0x1234ABCD);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'url', true);
xhr.onload = function(e) {
  console.log('data received');
};
xhr.send(buffer);

关于XHR2的更多细节:,希望这能对同样感到困惑的人有所帮助:)

经过一些研究,结果证明这是AngularJs的问题。缓冲区不是使用AngularJs$http在有效负载中发布的,我必须使用XHR2(AngularJs环绕它)直接发布缓冲区,这是成功的。更多细节请参考:经过一些研究,结果是AngularJs的问题。缓冲区不是使用AngularJs$http在有效负载中发布的,我必须使用XHR2(AngularJs环绕它)直接发布缓冲区,这是成功的。更多细节请参考:经过一些研究,结果是AngularJs的问题。缓冲区不是使用AngularJs$http在有效负载中发布的,我必须使用XHR2(AngularJs环绕它)直接发布缓冲区,这是成功的。详情请参阅: