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

Options for editing MS Word documents in Azure Storage

此问题是 previous question 无人回答的问题。

我在 Azure Web 应用程序中有一个编辑文档的要求,而不是:-

  1. 正在下载文件
  2. 在 MS Office Word 中打开下载的文件
  3. 编辑并保存在本地
  4. 单击网络表单上的按钮
  5. 浏览到已编辑的文件,然后单击“确定”上传它

客户希望获得类似于您在 Sharepoint 中获得的体验,即

  1. 点击link进入word文档
  2. MS Office Word 在客户端上启动
  3. 他们编辑并保存(在线)文档

我找到的一个解决方案是...

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

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

在 html 中使用 link,例如...

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

这有很多问题。

  1. 这不是跨浏览器解决方案。虽然此 link 将导致 MS Office Word 启动并在 Firefox 和 Internet Explorer 中成功加载文档,但它在 Chrome(下载文件)和 Edge(不处理完全没有)。
  2. 它本质上是不安全的,需要将一组凭据分发给需要访问系统的所有客户端。

谁能提出替代解决方案?

Options for editing MS Word documents in Azure Storage

要在线编辑MS Word文档,将Word文档保存到OneDrive是一个不错的选择。 OneDrive会为我们上传的文件提供一个link,我们可以根据这个link.

查看和编辑文件

这里是详细步骤。

  1. 从 Azure 存储中读取要编辑的 MS Word 文档。
  2. 使用 OneDrive API 将此文档保存到 OneDrive 文件夹并从响应中获取 link。这是我用来将文件上传到 OneDrive 的 HTTP 请求消息。
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 属性 中获取文件的 link。是这样的,

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

更多信息,下面link供您参考。

Simple item upload to OneDrive using PUT

  1. 将网络挂钩添加到您的 OneDrive 文件夹。如果有人在线编辑该文件,将向您的方法发送一条消息,您可以下载更新后的文件并保存到您的 Azure 存储中。这是一个示例 HTTP 请求消息
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"
}

更多信息,下面link供您参考。

WebHooks - Adding a new subscription

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