使用Javascript将Largefile上载到Azure Blob

时间:2013-11-12 17:04:27

标签: javascript jquery asp.net-mvc azure azure-storage

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

2 个答案:

答案 0 :(得分:16)

更新我的答案,现在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-azure-blob-storage/

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

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

答案 1 :(得分:-2)

Azure为浏览器发布了存储JavaScript客户端库。 https://azure.microsoft.com/en-us/blog/new-azure-storage-javascript-client-library-for-browsers-preview/

指南和样本在这里: https://dmrelease.blob.core.windows.net/azurestoragejssample/samples/sample-blob.html

此处还有一个简单的演示,可以使用SAS令牌将blob上传到容器。 https://authinazuread.azurewebsites.net/storage.html

它是所有客户端javascript,因此文件不会传输到服务器。它支持分块上传,适用于大文件。