我正在实现 WOPI 服务器以尝试与 Office Online 集成。当 WOPI 客户端调用 PutFile 方法(保存文件)时,它发送一个空请求(req.body.length === 0)。这是 Node/Express 代码:
app.post('/wopi/files/:fileId/contents', function (req, res) {
console.log(req.body.length);
...
非常感谢任何建议。
最佳答案
我找到了答案:
将以下中间件放在 bodyParser 中间件之前。它会在 request.rawBody 中收集原始正文数据,并且不会干扰 bodyParser。
app.use(function(req, res, next) {
var data = '';
req.setEncoding('utf8');
req.on('data', function(chunk) {
data += chunk;
});
req.on('end', function() {
req.rawBody = data;
next();
});
});
app.use(express.bodyParser());
有关更多信息,请参见此处:https://stackoverflow.com/a/13565786/5976568
编辑:
raw-body-parser ,一个 Node 包很不错,我在我的解决方案中使用它。
var rawBodyParser = require('raw-body-parser');
app.use(rawBodyParser());
获取原始数据:
var rawBody = req.rawBody.toString('utf8');
关于javascript - 在线办公室 : WOPI PutFile is getting an empty request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865268/