使用Javascript将Largefile上载到Azure Blob

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

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

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

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

  2. 接下来在您的存储帐户上启用CORS。 如果您希望以编程方式执行此操作,您可能会发现此post很有用: 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后,博客中提到的代码应该可以正常工作。

实际上有一种方法虽然有一些先决条件/警告。

  1. 由于Blob存储中尚不支持CORS,因此您的HTML和JS文件需要存在于相同的blob存储帐户中。 它们应该在公共blob容器中。
  2. 由于您要上传大文件,因此需要将它们拆分为小于4 MB的块。 HTML 5有一个File API,可以将文件拆分成块,但并非所有浏览器都支持此function。

我前段时间写了一篇关于使用纯JavaScript和共享访问签名上传大文件的博文。 你可以在这里阅读那篇文章:http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript 。

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,因此文件不会传输到服务器。 它支持分块上传,适用于大文件。