Javascript Office Online:WOPI PutFile收到一个空请求

Javascript Office Online:WOPI PutFile收到一个空请求,javascript,node.js,ms-word,ms-office,ms-wopi,Javascript,Node.js,Ms Word,Ms Office,Ms Wopi,我正在实现一个WOPI服务器,试图与Office Online集成。当WOPI客户端调用PutFile方法(保存文件)时,它正在发送一个空请求(req.body.length==0)。以下是节点/快速代码: app.post('/wopi/files/:fileId/contents', function (req, res) { console.log(req.body.length); ... 非常感谢您的建议。如果您正在将WOPI主机与Office Online集成,我想您或

我正在实现一个WOPI服务器,试图与Office Online集成。当WOPI客户端调用PutFile方法(保存文件)时,它正在发送一个空请求(req.body.length==0)。以下是节点/快速代码:

app.post('/wopi/files/:fileId/contents', function (req, res) {
    console.log(req.body.length);
...  

非常感谢您的建议。

如果您正在将WOPI主机与Office Online集成,我想您或您的公司可能已经注册了Microsoft所谓的Office 365云存储合作伙伴计划

如果是这样的话,你可以在Yammer联系他们的积极支持团队。您可以在那里发布您的问题,这些问题将得到认真的回答。

我找到了答案:

将以下中间件放在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());
有关更多信息,请参见此处:

编辑:

,一个节点包非常好,我正在我的解决方案中使用它

var rawBodyParser = require('raw-body-parser');

app.use(rawBodyParser());
获取原始数据:

var rawBody = req.rawBody.toString('utf8');

如果您使用fiddler或类似工具检查请求,它是否包含任何附加头(如X-WOPI-Size)等。?不幸的是,和都没有说明身体在某些特殊情况下是否可以是空的……嗨@app_sciences你让它工作了吗?我遇到了完全相同的问题。我遇到了完全相同的问题,你找到解决方案了吗?