问题标签 [azure-blob-storage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5490 浏览

c# - Azure - Blob 容器上列表操作的排序顺序

blob 容器上的列表操作的排序顺序是什么?是不是像 Azure 表存储一样,它是按字母顺序排列的?

0 投票
3 回答
6211 浏览

c# - 提高 azure blob 存储查询速度

我们目前在同一个 Azure 容器下有一个包含数千个文件的 Blob 存储。我们的文件命名约定是这样的:

存储名称\团队\子团队\文件名

我正在编写一个工具来显示每个特定子团队的文件。代码获取容器的 blob 列表,然后为每个尝试匹配正确 Team\Subteam 的 blob 列表(示例代码见下文)。

这可行,但速度极慢(因为我需要检查所有文件以查看它们是否与特定的子团队匹配)。有什么方法可以提高查询速度吗?我可以考虑优化,例如“找到与您正在寻找的团队匹配的第一个文件,然后在您找到其他团队提前退出时跟踪”,但这会假设 BlobList 已排序并且不会修复最坏的情况。

不幸的是,目前无法将文件拆分到不同的容器中。

这是示例代码:

0 投票
2 回答
2283 浏览

azure - 自定义域在 Azure CDN 中出现错误 400

我正在尝试通过自定义域 (cdn.mydomain.com/pictures/logo.jpg) 访问我在 Azure CDN 上的内容

但我收到错误 400:

但是,当通过给定 på Azure (accountname.blob.core.windows.net) 的 URL 访问时,一切正常。

存储是几周前创建的,自定义域也是如此。我创建了一个 CNAME 并将其指向 accountname.blob.core.windows.net。

如何显示我的自定义域中的内容?

编辑:我尝试将我的自定义域指向 xxxxxxx.vo.msecnd.net。现在,我得到的只是一个空白页。我似乎无法弄清楚将我的自定义域指向哪里。无论如何,我最终都会遇到 http 错误 400。

0 投票
2 回答
842 浏览

azure - 如何像访问本地文件一样访问 azure 存储 blob?

有没有办法“挂载”文件以进行读/写访问?我意识到我可以 GetBlobReference 和 BlobStream 但如果我只想为不理解 Azure 的库提供文件路径怎么办?

一个例子:一个“记录器”库,它只是以某种方式将文本附加到指定的文件。另一个(更现实的)示例:.sdf 的数据源(sql server compact 4)

0 投票
3 回答
1291 浏览

azure - 更好地理解 Blob 存储 (Azure) 中签名标识符的用途

在 Azure 中将共享访问签名与 Blob 存储一起使用时,我试图了解签名标识符的用途。我知道签名标识符基本上应用于容器级别并且是命名的。此外,我知道他们提供的任何共享访问策略的有效期都超过一个小时(与未指定签名标识符时相反)。我想我的问题是你不能只在具有适当权限和到期时间的容器级别应用共享访问签名吗?感谢所有的回复。


好的,我想我现在明白了。因此,解释 SI 的最佳方式是它们是容器级别访问控制的另一个抽象级别。此外,它们允许您指定在撤销之前可以应用多长时间的策略。在显式声明和 SI 声明中,撤销几乎是到期时间。

所以我的下一个问题是,例如,我有一项已被妥协的政策。我如何立即撤销或更改策略(因为我已经在我的代码中定义了这个策略;我如何在没有重新部署代码的情况下更改它)?

0 投票
3 回答
6828 浏览

azure - 是否可以将 blob 存储挂载到我的本地计算机进行部署?

我有一个构建脚本,将其配置为将一些文件转储到 Azure Blob 存储中非常有用,以便我的 Azure Web 角色可以获取它们。

我的首选计划是找到某种方法将 Blob 存储安装在我的构建服务器上作为映射驱动器,并简单地使用 Robocopy 复制文件。这将涉及最少的摩擦,因为我已经使用WebDrive将一些这样的文件部署到其他 Web 服务器。

我找到了一个可以让我这样做的软件:http ://www.gladinet.com/

然而,在进一步调查中,我发现它需要端口 80 才能运行,而不会在服务器上进行一些看起来很毛茸茸的黑客攻击。

那么是否还有其他我可以使用的软件或者我没有考虑过的其他方式,例如将文件部署到与 blob 存储自动同步的本地文件夹?

更新以回应@David Makogon

我正在使用http://waacceleratorumbraco.codeplex.com/这在 blob 存储和 Web 角色之间执行 2 路同步。我已经使用http://cloudberrylab.com/对此进行了测试,我可以手动将文件部署到 blob,并将它们正确部署到 Web 角色。此外,我在网络角色中完成了反向和更新的文件,然后将这些文件同步回 blob,随后我从 blob 存储中编辑/下载了它们。

我真正在寻找的是一种将云莓方面自动化的方法。所以我没有手动步骤来复制一些文件。同时,我将研究 Powershell 解决方案。

0 投票
2 回答
5403 浏览

c# - Azure Blob:在 C# 中获取块列表

我正在使用Azure 存储中的块 Blob。我需要获取未提交的块,据我发现我需要调用“获取块列表”。这是问题所在。

C# (Microsoft.WindowsAzure.StorageClient.dll) 中是否存在“获取阻止列表”功能?

MSDN 只提到了做一个 HTTP 请求,没有提到 StorageClient API。

如果 C# 中不存在此函数,是否有计划将其包含到 C# API 中?

0 投票
2 回答
2707 浏览

asp-classic - 如何使用经典 ASP 将文件上传到 Azure Blob 存储?

我正在尝试使用经典 ASP 将文件上传到 Azure Blob 存储(别无选择!)。但是,尽管我可以使用 MSXML2.ServerXMLHTTP 列出容器内容,但我无法创建 blob。我需要用它来上传 PDF 文件,所以我使用 BlockBlob。

我相信我无法正确创建授权密钥。有没有人有在经典 ASP VBScript 中创建授权密钥的代码示例?我有类似下面的内容,但不知道如何在 Classic ASP 中生成密钥。

我收到错误 AuthenticationFailedServer 无法对请求进行身份验证。确保 Authorization 标头的值正确形成,包括签名。

谢谢

格雷姆

0 投票
2 回答
501 浏览

azure - 我们可以设置多个指向 Azure Blob 存储的 CNAME 记录吗?

我已经为“storage.mycompany.com”设置了一个指向我的 blob 存储的 CNAME,它工作正常。但是,我有一个多租户应用程序,我的一些客户想要他们自己的个性化 URL。他们希望“storage.customer1.com”也指向同一个 blob 存储。

我的一位客户在他的 DNS(假设是“storage.xyz.com”)中配置了一个指向我的 DNS 条目“storage.mycompany.com”的 CNAME,但它不起作用。

有人知道这是可能的吗?

0 投票
4 回答
12643 浏览

asp.net - 如何从网页将大文件上传到 Azure Blob

ASP.NET 内部有 2 GB 的寻址空间,但实际上您只有不到 1 GB 的可用上传空间(请参阅http://support.microsoft.com/?id=295626)。此外 IIS 7 的上限为 30 MB(请参阅http://www.iislogs.com/steveschofield/iis7-post-40-adjusting-file-upload-size-in-iis7),您应该运行

在服务器上超出此 30 MB 限制。但是如何在我的 Azure 服务器上运行它呢?

另外,根据http://support.microsoft.com/?id=295626

在上传过程中,ASP.NET 将整个文件加载到内存中,然后用户才能将文件保存到磁盘。

,所以如果很多用户一次上传大文件,我会很快耗尽内存限制。在下面的代码中,我使用了流,但我猜想整个文件还是先上传到内存中。是这样吗?

我知道像http://azureblobuploader.codeplex.com/这样的非网页上传工具,但我真的需要从网页上传它。

所以,我的问题是:

  1. 如何从网页将大于 2 GB 的文件上传到 Blob
  2. 如何从网页上传大文件作为不占用所有内存的流
  3. 如果解决方案是编写我自己的 HttpModule 或 HttpHandler 来处理我的上传,我怎样才能在我的 Azure 服务器上安装它?我可以在 Azure 上使用像http://neatupload.codeplex.com/这样的 HttpHandlers 吗?
  4. 这个项目不在 SharePoint 上,但我知道在 SharePoint 中有一个叫做 Blob 提供程序的东西,你可以自己编写,是否有用于 ASP.NET 的 Blob 提供程序?

我还可以提一下,我上面的代码默认情况下适用于小于 30 MB 的文件,我在客户端上使用 SWFUpload V2.2.0。

更新 19. 六月 19:09: Twitter 上的@YvesGoeleven 给了我一个使用共享访问签名的提示(请参阅 msdn.microsoft.com/en-us/library/ee395415.aspx)并将文件直接上传到 Azure Blob 存储,无需完全通过 ASP.NET。我创建了一个 JSON WCF,它向我的 blob 存储返回一个有效的 SAS ut。

它可以工作,但我不能将它与 SWFUpload 一起使用,因为它使用 HTTP POST 动词,而不是 Azure Blob 存储在创建新 blob 项时期望的 HTTP PUT 动词。任何人都知道如何在不制作我自己的使用 HTTP PUT 动词的自定义 Silverlight 或 Flash 客户端组件的情况下解决这个问题?上传文件时我想要一个进度条,因此使用 PUT 的提交表单不是最佳的。

对于那些对客户端代码感兴趣的人(由于 SWFUpload 使用 HTTP POST 而不是像 Azure Blob Storage 所期望的那样 PUT ,因此无法正常工作):

更新 19. 六月 21:07:

我认为由于 SWFUpload 是开源的,因此我下载了源代码并将动词从 POST 更改为 PUT,遗憾的是 Flash Player URLRequestMethod 不支持除 GET 和 POST 之外的其他动词。我确实找到了一个所谓的解决方法

,但这仅适用于 Adob​​e Air,不适用于 Flash Player。

我已经读过 SilverLight 3 和更高版本支持 HTTP PUT 动词,所以我认为我必须编写一些 SilverLight 代码才能到达这里。我确实在http://blog.smarx.com/posts/uploading-windows-azure-blobs-from-silverlight-part-1-shared-access-signatures找到了这个可能对我有帮助的博客文章系列。

更新@ 27. 2011 年 6 月:

我现在已经成功地使用我根据http://blog.smarx.com/posts/uploading-windows中的项目编写的自定义 Silverlight 客户端从网页上传大文件(用 4,5 Gb 文件测试)azure-blob-from-silverlight-part-1-shared-access-signatures. 由于 Silverlight 支持 Azure Blob 存储所需的 HTTP PUT 动词并支持渐进式上传,因此我现在可以将大量文件直接上传到 Azure Blob 存储,而且我不必通过 ASP.NET 解决方案,我也获得一些不错的进度条,如果他/她愿意,用户可以在上传过程中取消。服务器上的内存使用量很少,因为在将整个文件放入 Azure Blob 存储之前不会上传整个文件。我使用 WCF RESTfull 服务应要求提供的共享访问签名(请参阅 msdn.microsoft.com/en-us/library/ee395415.aspx)。我认为这个解决方案是我们找到的最好的解决方案。谢谢。

更新@ 18. 2011 年 7 月:

我用我在这里找到的东西创建了一个开源项目:

http://azureslfileuploader.codeplex.com/