Доступ к полезной нагрузке запроса ArrayBuffer в nodejs

app.post("/arraybuffer/:filename", function(req, res){
    console.log(req.body);
    console.log(req.params.filename);
}

У меня есть сервер nodejs, который получает ArrayBuffer, отправленный ему со стороны клиента, используя xhr.send.

  • Я вижу данные ArrayBuffer в разделе «Полезная нагрузка запроса» в запросе POST с помощью инструментов chrome dev на вкладке «Сеть»!

Но когда я console.log(req.body), я получаю {}.
Я также пробовал console.log(new Uint8Array(req.body)); - аналогичный результат - Uint8Array {}

Кстати, console.log(req.params.filename); работает нормально.

Нужна помощь, спасибо.

(P.S. В моем app.js вверху есть следующее, так что это не проблема синтаксического анализа json)

app.use(bodyparser.json({limit: "15mb"}));
app.use(bodyparser.urlencoded({extended: true}));

person Yaan    schedule 26.03.2016    source источник
comment
expressjs.com/en/4x/api.html#req.body не вижу ничего про ArrayBuffers...   -  person dandavis    schedule 26.03.2016
comment
Похоже, что bodyparser не обрабатывает двоичные данные, поэтому вам придется либо найти промежуточное программное обеспечение, которое это делает, либо просто прочитать фактические данные http post самостоятельно.   -  person jfriend00    schedule 26.03.2016
comment
Это сработало - app.use(bodyparser.raw({type: application/octet-stream})); и вставьте заголовок: application/octet-stream на стороне клиента!   -  person Yaan    schedule 03.04.2016