【问题标题】:Office Online: WOPI PutFile is getting an empty requestOffice Online:WOPI PutFile 收到一个空请求
【发布时间】:2016-01-18 22:29:34
【问题描述】:

我正在实施 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);
...  

非常感谢任何建议。

【问题讨论】:

  • 如果你用fiddler或类似工具检查请求,它是否包含任何额外的headers(如X-WOPI-Size)等?不幸的是,oldnew documentation 都没有指定在某些特殊情况下主体是否可以为空...
  • 嗨@app_sciences 你让它工作了吗?我遇到了完全相同的问题。
  • 我也遇到了同样的问题,你找到解决办法了吗?

标签: javascript node.js ms-word ms-office ms-wopi


【解决方案1】:

我找到了答案:

将以下中间件放在 bodyParser 中间件之前。它会在 request.rawBody 中收集原始 body 数据,不会干扰 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');

【讨论】:

    【解决方案2】:

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

    如果是这种情况,您可以联系他们在 Yammer 中的积极支持团队。在那里您可以发布您的问题,我们会认真回答。

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 2022-11-20
      • 2013-08-06
      • 1970-01-01
      • 2020-12-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多