- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是想问一个简单的问题。
我希望用户直接将 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 作为容器吗?//困惑
谢谢!
最佳答案
不,在上面的示例中,您的用户没有直接上传存储帐户中的文件。他们通过调用 Upload
操作将文件从浏览器上传到您的网络服务器,该操作又将数据上传到存储中。
要通过客户端浏览器直接将数据上传到存储中,您需要使用 CORS
和 AJAX
等概念。首先,您需要在存储帐户上启用 CORS。这是一项一次性操作,您需要执行此操作,以便浏览器可以直接与您的存储进行交互。
设置 CORS 设置时,您可以从以下 CORS 设置开始:
允许的域:您的网站地址(您也可以指定 *,这意味着所有网站都可以访问您的存储空间。如果您真的刚开始,但一旦掌握了概念,可能会推荐使用,您应该始终指定非常具体的网站地址)
允许的方法:PUT、POST(这表示您将在 JavaScript AJAX 调用中使用的 HTTP 动词)
允许的 header :*(*表示允许浏览器发送的所有 header 。您应该坚持这一点,因为不同的浏览器往往会发送不同的 header ,这使得调试变得非常困难)
公开 header :*(*表示所有 header 将由存储服务发送到浏览器)
最大年龄(秒):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/
关于使用 SAS 的 Azure 上传 blob,对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837585/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!