使用Javascript将Largefile上载到Azure Blob

Sri*_*vas 3 javascript asp.net-mvc jquery azure azure-storage

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

Gau*_*tri 16

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

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

  1. 首先Shared Access Signature URL (SAS),在Write要上载文件的blob容器上创建至少具有权限的权限.由于您要上传大文件,我建议保持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后,博客中提到的代码应该可以正常运行.

实际上有一种方法虽然有一些先决条件/警告.
  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 .