用于在Azure存储中编辑MS Word文档的选项

时间:2017-03-01 02:09:08

标签: azure ms-word ms-office azure-storage file-storage

这个问题来自previous question未得到答复。

我在Azure网络应用程序中要求编辑文档,而不是: -

  1. 下载文件
  2. 在MS Office Word中打开下载的文件
  3. 在本地编辑和保存
  4. 点击网络表单上的按钮
  5. 浏览已编辑的文件,然后单击“确定”上传
  6. 客户希望获得与Sharepoint相似的体验,即

    1. 单击指向word文档的链接
    2. MS Office Word在客户端上启动
    3. 他们编辑并保存(在线)文档
    4. 我发现的一个解决方案是......

      将文档存储在Azure文件共享中。创建一个登录脚本,该脚本将在每个Windows客户端访问上运行,以设置Azure文件共享的用户名和密码....

      cmdkey /add:<storage_account>.file.core.windows.net /user:AZURE\<storage_account> /pass:<storage_account_key>
      

      使用html中的链接,如...

      <a href='file://///<storage_account>.file.core.windows.net/<storage_container>/test.docx'>Test.doc</a>
      

      这有很多问题。

      1. 这不是跨浏览器解决方案。虽然此链接将导致MS Office Word启动并在Firefox和Internet Explorer中成功加载文档,但它在Chrome(下载文件)和Edge(根本不处理它)中不起作用。
      2. 它本身就不安全,需要将一组凭据分发给需要访问系统的所有客户端。
      3. 有人可以建议替代解决方案吗?

1 个答案:

答案 0 :(得分:3)

  

在Azure存储中编辑MS Word文档的选项

要在线编辑MS Word文档,将Word文档保存到OneDrive是一个不错的选择。 OneDrive将为我们上传的文件提供链接,我们可以根据此链接查看和编辑文件。

以下是详细步骤。

  1. 从Azure存储中读取要编辑的MS Word文档。
  2. 使用OneDrive API将此文档保存到OneDrive文件夹,并从响应中获取链接。这是我用来将文件上传到OneDrive的HTTP请求消息。
  3. PUT https://graph.microsoft.com/v1.0/drive/root:/Documents/{filename}.docx:/content HTTP/1.1
    Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
    Authorization: Bearer {your token}
    Accept: application/json
    Host: graph.microsoft.com
    Expect: 100-continue
    Connection: Keep-Alive
    
    Put your file content here
    

    我们可以从响应JSON对象的webUrl属性获取该文件的链接。就像这样,

    "webUrl": "https://1drv.ms/w/s!AI164yLtIBq0gSA"
    

    有关详细信息,请参阅以下链接供您参考。

    Simple item upload to OneDrive using PUT

    1. 将Web挂钩添加到OneDrive文件夹中。如果有人在线编辑文件,则会向您的方法发送一条消息,您可以下载更新的文件并保存到Azure存储中。以下是HTTP请求消息示例
    2. POST /subscriptions
      Content-Type: application/json
      
      {
      "notificationUrl": "https://xxxx.azurewebsites.net/api/webhook-receiver",
      "expirationDateTime": "2018-01-01T11:23:00.000Z",
      "resource": "/me/drive/root",
      "changeType": "updated",
      "clientState": "client-specific string"
      }
      

      有关详细信息,请参阅以下链接供您参考。

      WebHooks - Adding a new subscription

      1. 如果文件夹已满,则从OneDrive文件夹中删除文件。