【问题标题】:Azure Storage private container blob to MemoryStreamAzure 存储专用容器 blob 到 MemoryStream
【发布时间】:2023-03-14 10:05:02
【问题描述】:

我正在兜圈子,试图找出将文件从 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) Not Found.

但是,当容器不是私有的时,它会正常工作。

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

【问题讨论】:

    标签: c# azure model-view-controller azure-storage


    【解决方案1】:

    请尝试以下代码:

    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 构造函数可以解决这个问题。

    【讨论】:

    • 完美,谢谢。我只是错过了那个额外的参数。它现在可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2015-04-24
    • 2019-03-08
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多