繁体   English   中英

Azure Blob容器名称可以使用多长时间?

[英]How long can an Azure Blob Container Name be?

我已经读过azure blob存储容器名称最长不得超过63个字符(请参阅https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/naming-and-referencing-containers-- blobs - 和 - 元数据 ),但在阅读本文之前,我测试的容器名称比这更长,所以尝试了更长的时间:

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("YourKey");
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
        CloudBlockBlob blockBlob = container.GetBlockBlobReference(@"blob.txt");

这似乎工作正常(注意大写字母,也可能不允许)。 我还使用Microsoft Azure Storage Explorer(v0.8.9)打开使用C#创建的文件夹和文件,并在我的blob存储中创建更长的文件夹名称(大小写混合)。

在现实生活中,我想要容器最多大约100个字符(复制具有五个级别文件夹的Windows文件结构,子文件夹名称最多20个字符。如果有必要,我可以强制这些小写。我的大部分内容阅读似乎建议blob存储比文件存储更好,除非处理遗留系统或需要SMB。基于这种推理,blob存储听起来更好,测试时一切似乎都能正常工作。但是,微软可能会突然强加小写和63个字符的限制?我还缺少什么吗?

因此容器名称的最大长度可以是63个字符。 您没有在代码中收到任何错误的原因是因为此限制是在服务器端强制执行的。 使用以下代码创建CloudBlobContainer实例时:

CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");

这发生在客户端。 如果您尝试对此container对象执行任何服务器端操作(如创建该容器),则会出现错误,因为您违反了此63个字符的限制。

您可以将容器视为Blob存储帐户中的顶级文件夹。 换句话说,如果您认为计算机上的C:\\作为存储帐户,则容器可能是windows 现在每个容器可以有零个或多个blob并创建层次结构的幻觉,你可以将你的blob命名为cursors\\aero_arrow.cur 命名blob时,可以包含多于63的字符。但是,由于每个blob都可以通过URL( https://accountname.blob.core.windows.net/containername/blobname )访问,因此最大长度受最大值限制URL中的字符,我相信是1024个字符。

暂无
暂无

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

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