繁体   English   中英

使用 Javascript 将大文件上传到 Azure Blob

[英]Upload Largefile to Azure Blob using Javascript

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

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

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

  1. 首先创建一个Shared Access Signature URL (SAS) ,至少对要在其中上传文件的 blob 容器具有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 有一个文件 API,可以将文件分成块,但并非所有浏览器都支持此功能。
前段时间我写了一篇关于使用纯 JavaScript 和共享访问签名上传大文件的博客文章。 您可以在此处阅读该帖子:http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript .

Azure发布了用于浏览器的Storage JavaScript客户端库。 https://azure.microsoft.com/zh-CN/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,因此文件不会传输到服务器。 它支持分块上传,并且可以很好地处理大型文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM