直接使用blob URL访问图像时出错

问题描述 投票:0回答:2

我是 Azure 新手。我已激活免费订阅以学习 Azure。我在我的门户中创建了一个存储帐户。在该帐户中,我创建了一个容器。

我已成功将图像上传到该容器。当我单击该图像时,我在属性中找到了可以通过浏览器访问的 URL。

但是我在执行上述操作时遇到以下错误。

<Error>
<Code>ResourceNotFound</Code>
<Message>
The specified resource does not exist. RequestId:<Guid> Time:2022-05-17T11:20:46.2299517Z
</Message>
</Error>

但是该图像确实存在于该容器中。为什么我会收到上述错误?如何避免该错误?

blob storage azure-storage
2个回答
2
投票

我已经在我的环境中进行了测试。请注意,当您创建新容器时,它的访问级别默认为私有

请检查您的容器的访问级别是

Private
或不是如下所示:

转到 Azure 门户 -> 存储帐户 -> 您的存储帐户 -> 容器 -> 您的容器“公共访问级别”

如果该访问级别是

private
,当您直接通过浏览器访问该容器的blob时,您将收到如下错误:

要更改容器的访问级别:

选择启用

Change Access level
选项的容器 -> 选择更改访问级别 -> 从下拉列表中选择
Blob
Container
-> 单击确定

现在,直接通过浏览器访问blob URL,不会有任何问题。


0
投票

就我而言,(我收到了同样的错误),我的容器是公共的(blob),并且所有访问权限都设置正确。 我的问题是,当我使用 Azure.Storage.Blobs 命名空间上传图像时,例如:

`
BlobContainerClient containerClient = new BlobContainerClient(blobcnnstr, containername);
using (MemoryStream stream = new MemoryStream(File.ReadAllBytes(filefullyqualifiedname)))
{
    containerClient.UploadBlob(filename, stream);
}
`

上传的图片内容类型错误。 对于图像,内容类型需要是“image/jpeg”

所以我用了

`
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;

BlobContainerClient containerClient = new BlobContainerClient(blobcnnstr, containername);

BlobClient bc = containerClient.GetBlobClient(filename);

using (MemoryStream stream = new MemoryStream(File.ReadAllBytes(filefullyqualifiedname)))
{
    bc.Upload(stream, httpHeaders: new BlobHttpHeaders { ContentType = "image/jpeg" }, conditions: null);     
}
`

blobcnnstr 变量包含存储帐户访问密钥连接字符串, containername 变量包含容器名称, filename 变量包含不带路径的文件名, filefulqualifiedname 变量包含路径 + 文件名。

希望这对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.