7

我见过几个例子,其中文件传输到服务器端,然后上传到 Azure Blob 存储。
但我有几 GB 大小的文件。
有没有一种方法可以使用客户端脚本直接将文件上传到 Azure Blob 存储,而不是从服务器端执行以节省时间。

4

1 回答 1

19

更新我的答案,现在 Windows Azure 存储支持 CORS 并且 OP 没有接受任何答案:)。

是的,可以将大文件直接从浏览器上传到 Windows Azure 存储。您可能会发现这些步骤很有用:

  1. 首先在您希望上传文件的 blob 容器上创建一个Shared Access Signature URL (SAS)至少具有权限的文件。Write由于您要上传大文件,我建议保持 SAS 到期时间足够长。

  2. 接下来在您的存储帐户上启用 CORS。如果您希望以编程方式执行此操作,您可能会发现这篇文章很有用:http: //gauravmantri.com/2013/12/01/windows-azure-storage-and-cors-lets-have-some-fun/。如果你想使用一个工具,我的公司已经发布了一个Free工具来做到这一点。您可以阅读有关此工具的更多信息并从此处下载:http: //blog.cynapta.com/2013/12/cynapta-azure-cors-helper-free-tool-to-manage-cors-rules-for-windows-天蓝色斑点存储/ .

  3. 我写了一篇关于将非常大的文件上传到 blob 存储的博客文章,您可以在此处阅读:http: //gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob- storage-using-shared-access-signature-html-and-javascript/。在您的存储帐户上启用 CORS 后,博客中提到的代码应该可以正常工作。

实际上有一种方法,尽管有一些先决条件/警告。
  1. 由于 Blob 存储尚不支持 CORS,因此您的 HTML 和 JS 文件需要存在于同一个 Blob 存储帐户中。它们应该位于公共 blob 容器中。
  2. 由于您要上传大文件,因此需要将它们分成大小小于 4 MB 的块。HTML 5 有一个 File API,可以将文件拆分成块,但并非所有浏览器都支持此功能。
前段时间我写了一篇关于使用纯 JavaScript 和共享访问签名上传大文件的博客文章。您可以在此处阅读该帖子:http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript .
于 2013-11-12T17:22:21.910 回答