我已将多个图像上传到类型为StorageV2(通用v2)的Azure存储帐户上的Blob容器中。
这些以编程方式上传。这是我使用的代码:
public Task CopyFile(string fileName, string targetPath)
{
var blobRef = Container.GetBlockBlobReference(targetPath);
blobRef.Properties.ContentType = GetContentType(fileName);
return blobRef.UploadFromFileAsync(fileName);
}
public string GetContentType(string fileName)
{
var provider = new FileExtensionContentTypeProvider();
if (!provider.TryGetContentType(fileName, out var contentType))
{
contentType = "application/octet-stream";
}
return contentType;
}
Container
是已初始化的CloudBlobContainer
实例。
使用Storage Explorer时,我可以看到上传的文件。如果我查看任何文件的属性,它将列出Uri属性。但是,如果我复制值(URL)并粘贴到浏览器中,则会看到以下错误页面:
<Error>
<Code>ResourceNotFound</Code>
<Message>
The specified resource does not exist. RequestId:12485818-601e-0017-6f69-56c3df000000 Time:2019-08-19T08:35:13.2123849Z
</Message>
</Error>
但是,如果我在Storage Explorer中双击文件,它将正确下载映像。据我所知,它使用的URL与我之前复制的URL相同,除了一些看起来像这样的其他查询字符串:?sv=2018-03-28&ss=bqtf&srt=sco&sp=rwdlacup&se=2019-08-19T16:49:38Z&sig=%2FJs7VnGKsjplalKXCcl0XosgUkPWJccg0qdvCSZlDSs%3D&_=1566204636804
我认为这一定意味着我的Blob无法公开使用,但是我找不到任何设置可以使我的图像在其已知URI上公开可用。有人可以在这里指出正确的方向吗?谢谢。
答案 0 :(得分:2)
据我所知,如果您容器的访问级别为“私有”,则使用直接URL来访问Blob,然后会收到错误消息。如果要访问它,则需要为其生成SAS令牌。
有关更多详细信息,请参阅
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-manage-access-to-resources https://docs.microsoft.com/en-us/azure/storage/common/storage-sas-overview
答案 1 :(得分:1)