Azure Blob 存储返回 404 和一些文件
Posted
技术标签:
【中文标题】Azure Blob 存储返回 404 和一些文件【英文标题】:Azure blob storage returns 404 with some files 【发布时间】:2017-12-15 22:19:09 【问题描述】:我有一个 Azure blob 存储设置,其中包含几个文件。当文件较小(KB 大小)时,我可以将文件下载到 Stream 中,但是当文件稍大(MB 大小)时,我会收到 404 错误。我已经从门户网站手动下载了一个返回 404 的图像,并调整了该图像的大小,然后将较小的图像上传回容器,然后我可以按语法将其下载到流中。
这是我用来下载 blob 的代码
private static byte[] PerformDownload(string fileName, CloudBlobContainer container)
var blockBlob = container.GetBlockBlobReference(fileName);
using (var memoryStream = new MemoryStream())
blockBlob.DownloadToStream(memoryStream);
memoryStream.Seek(0, SeekOrigin.Begin);
var binaryReader = new BinaryReader(memoryStream);
var bytes = binaryReader.ReadBytes((int)memoryStream.Length);
return bytes;
容器被传递到这个方法中,正如我提到的,我可以毫无问题地从容器中下载一些文件,但是如果你需要该代码,我也可以添加它
使用您找到的标准示例检索容器,但这里是代码
private static CloudBlobContainer GetContainer(string containerName)
var storageAccount = CloudStorageAccount.Parse(ConnectionString);
var container = CreateContainerIfNeeded(storageAccount, containerName);
return container;
private static CloudBlobContainer CreateContainerIfNeeded(CloudStorageAccount storageAccount, string containerName)
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(containerName);
container.CreateIfNotExists();
return container;
另外,区分大小写也不是问题,因为容器的名称是 2017-106,文件是 4448.jpg。
【问题讨论】:
请添加代码。另请注意,blob 名称区分大小写,因此如果您提供不同大小写的 blob 名称(当 blob 实际保存为MyImage.png
时请求 myimage.png
),您将收到 404 错误。
我用附加代码更新了问题
【参考方案1】:
当文件较小(KB 大小)时,我可以将文件下载到 Stream 中,但是当文件稍大(MB 大小)时,我会收到 404 错误。
目前max size of a block blob 约为。 4.75 TB,将 MB 大小的数据存储在块 Blob 中,这不会导致 Azure Blob 服务在访问 Blob 时返回 404。 404 error 表示指定的 blob 不存在,正如 Gaurav Mantri 所说,Blob name is case-sensitive,请确保您提供的 filename
(blob 名称)确实存在于您的容器中。
此外,如果找不到特定的 blob,但它确实存在于您的容器中,您可以创建支持请求来报告它。
【讨论】:
文件确实存在,区分大小写不是问题,因为容器名称是 2017-106,文件名称是 4448.jpg。 是这种情况的敏感性扩展名是.JPG而不是.jpg谢谢你的帮助以上是关于Azure Blob 存储返回 404 和一些文件的主要内容,如果未能解决你的问题,请参考以下文章
来自 PUT 的 Azure Blob 存储文档中的“404 资源未找到”
使用 Azure 函数从 Azure Blob 存储下载文件会返回不同的文件大小