我见过几个示例,其中文件传输到服务器端,然后上传到Azure Blob存储 但是我的文件大小只有几GB 有没有办法可以使用客户端脚本直接将文件上传到Azure Blob存储,而不是从服务器端执行以节省时间。
答案 0 :(得分:16)
更新我的答案,现在Windows Azure存储中支持CORS并且OP未接受任何答案:)。
是的,可以直接从浏览器将大文件上传到Windows Azure存储。您可能会发现这些步骤很有用:
首先在要上传文件的blob容器上创建一个至少具有Shared Access Signature URL (SAS)
权限的Write
。由于您要上传大文件,我建议将SAS到期时间保持足够长。
接下来在您的存储帐户上启用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/。
我写了一篇博客文章,将非常大的文件上传到blob存储中,你可以在这里阅读:http://gauravmantri.com/2013/02/16/uploading-large-files-in-windows-azure-blob-storage-using-shared-access-signature-html-and-javascript/。在您的存储帐户上启用CORS后,博客中提到的代码应该可以正常运行。
答案 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,因此文件不会传输到服务器。它支持分块上传,适用于大文件。