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

Mic*_*ick 5 ms-word ms-office azure file-storage azure-storage

该问题是先前未解决的问题的继续。

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

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

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

  1. 单击指向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>
Run Code Online (Sandbox Code Playgroud)

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

<a href='file://///<storage_account>.file.core.windows.net/<storage_container>/test.docx'>Test.doc</a>
Run Code Online (Sandbox Code Playgroud)

这有很多问题。

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

谁能建议替代解决方案?

Amo*_*mor 5

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

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

以下是详细步骤。

  1. 从 Azure 存储中读取要编辑的 MS Word 文档。
  2. 使用 OneDrive API 将此文档保存到 OneDrive 文件夹,并从响应中获取链接。这是我用来将文件上传到 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
Run Code Online (Sandbox Code Playgroud)

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

"webUrl": "https://1drv.ms/w/s!AI164yLtIBq0gSA"
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,以下链接供您参考。

使用 PUT 将简单项目上传到 OneDrive

  1. 将 Web 挂钩添加到 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"
}
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,以下链接供您参考。

WebHooks - 添加新订阅

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