AngularJS: полезная нагрузка POST-запроса пуста для ArrayBuffer
Я пытался использовать 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) { ... });
1 ответ
Как я уже говорил, для отправки 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: http://www.html5rocks.com/en/tutorials/file/xhr2/, надеюсь, это может помочь кому-то, кто также озадачен:)