Azure 存储私有容器 blob 转换为 MemoryStream

3

我正在困惑如何编写代码从Azure存储的私有容器中下载文件到MemoryStream。

目前我的代码如下...

StorageCredentials storageCredentials = new StorageCredentials(*my StorageAccountName*, *my StorageAccountAccessKey*);
CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true);

Uri blobUri = new Uri(featureFile.URL);
CloudBlockBlob blob = new CloudBlockBlob(blobUri);

MemoryStream mem = new MemoryStream();  
blob.DownloadToStream(mem);

最后一行出现错误,错误信息为...

远程服务器返回错误:(404)未找到。

然而,当容器不是私有的时,它可以正常工作且没有错误。

非常感谢您的帮助,谢谢。

1个回答

12
请尝试以下代码:
StorageCredentials storageCredentials = new StorageCredentials(*my StorageAccountName*, *my StorageAccountAccessKey*);
CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true);

Uri blobUri = new Uri(featureFile.URL);
CloudBlockBlob blob = new CloudBlockBlob(blobUri, storageCredentials);//added storageCredentials

MemoryStream mem = new MemoryStream();  
blob.DownloadToStream(mem);

由于容器具有 Private ACL,因此需要对请求进行身份验证。使用CloudBlockBlobthis构造函数可以完成这一点。


太好了,谢谢。我只是缺少了那个额外的参数。现在它可以正常工作了,没有错误。 - spaceduk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接