用SAS上传Azure blob,对吗?

时间:2014-05-23 20:04:56

标签: azure

只是想问一个简单的问题。

我希望用户将Blob 直接上传到Blob存储。下面是我想出的:

public ActionResult Upload(HttpPostedFileBase file)

    CloudBlobContainer blobContainerSas = new CloudBlobContainer(new Uri(blobSasUri));
    CloudBlockBlob blob = blobContainerSas.GetBlockBlobReference(BLOBNAMEHERE);
    blob.UploadFromStream(file.InputStream);

在此代码之前,我设置了blobSasUrl,(我把那部分留了出来)。

我想知道是否blob.UploadFromStream(file.InputStream);是正确的?我现在直接上传吗?

我使用SAS URI上传 blob ,(不是容器)。这甚至可能吗? blob甚至还没有上传......我应该使用SAS URI作为容器吗? //困惑

谢谢!

1 个答案:

答案 0 :(得分:2)

不,在上面的示例中,您的用户不直接上传存储帐户中的文件。他们正在通过调用Upload操作将文件从浏览器上传到您的网络服务器,然后又将数据上传到存储空间。

要通过客户端浏览器直接将数据上传到存储空间,您需要使用CORSAJAX等概念。首先,您需要在存储帐户上启用CORS。这是一次性操作,您需要这样做才能使浏览器直接与您的存储进行交互。

设置CORS设置时,您可以从以下CORS设置开始:

允许的域名:您的网站地址(您也可以指定*,这意味着所有网站都可以访问您的存储空间。如果您真的开始但是一旦掌握了概念,可以推荐,你应该总是指定非常具体的网站地址)

允许的方法:PUT,POST(这表示您将在JavaScript AJAX调用中使用的HTTP谓词)

允许标题:*(*表示允许浏览器发送的所有标题。您应该坚持使用,因为不同的浏览器往往会发送不同的标题,这会使调试变得非常困难)

外露标题:*(*表示存储服务会将所有标题发送到浏览器)

以秒为单位的最大年龄:3600

启用CORS后,您可以编写一个使用JavaScript / AJAX的应用程序,您的用户将直接在您的存储帐户中上传文件。

您可能希望阅读此博客文章,了解如何理解Azure中的CORS概念:http://msdn.microsoft.com/library/azure/dn535601.aspx

我还撰写了一篇关于Azure和CORS的博客文章,其中我演示了如何使用JavaScript / AJAX从浏览器上传文件,您可以在此处阅读:http://gauravmantri.com/2013/12/01/windows-azure-storage-and-cors-lets-have-some-fun/

对于配置CORS规则,您可能会发现我公司开发的这个免费实用程序很有用:http://blog.cynapta.com/2013/12/cynapta-azure-cors-helper-free-tool-to-manage-cors-rules-for-windows-azure-blob-storage/