【问题标题】:Options for editing MS Word documents in Azure Storage在 Azure 存储中编辑 MS Word 文档的选项
【发布时间】:2017-03-01 02:09:07
【问题描述】:

这个问题来自一个无人回答的previous question

我在 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>

在 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. 它本质上是不安全的,需要将一组凭据分发给需要访问系统的所有客户端。

谁能提出替代解决方案?

【问题讨论】:

  • 对一个问题投反对票甚至没有礼貌地解释原因的人......
  • 您好,您找到解决方案了吗?您是否尝试过 SAS(共享访问签名)?

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


【解决方案1】:

在 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

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

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

如需了解更多信息,请参考以下链接。

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"
}

如需了解更多信息,请参考以下链接。

WebHooks - Adding a new subscription

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

【讨论】:

  • 你试过我的建议了吗?如果我的回复对你有帮助,请标记为答案。谢谢。
  • 这可以通过 Node + Express API 实现吗?我已经构建了一个应用程序,它需要相同的功能。如何使用我的 API 将文档的副本从 Azure 存储上传到 OneedDrive,而无需登录?
猜你喜欢
  • 1970-01-01
  • 2014-11-18
  • 2011-04-06
  • 2013-04-23
  • 2019-04-12
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多