2015-06-18 3 views
1

Я попытался использовать POST для отправки некоторых байтов с использованием ArrayBuffer, но кажется, что полезная нагрузка запроса всегда пуста. Вот некоторые фрагменты коды:AngularJS: 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) { ... }); 
+0

После некоторых исследований, она оказаться вопрос AngularJs , Буфер не добавляется в полезную нагрузку, используя AngularJs $ http, я должен использовать XHR2 (который AngularJs обертывает) непосредственно для POST-буфера, что является успешным. Подробнее см .: http://www.html5rocks.com/en/tutorials/file/xhr2/#toc-send-string – Blazingspike

ответ

0

Как заметил я, чтобы отправить 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/#toc-send-string, надеюсь, что это может помочь для кого-то, кто также озадачило :)

Смежные вопросы