c# - Azure Blob 存储下载所有文件

标签 c# azure download blob storage

我想从容器“$logs”下载所有文件,但抛出 StorageException

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=" + accName + ";AccountKey=" + accKey);

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

CloudBlobContainer container = blobClient.GetContainerReference("$logs");

IEnumerable<IListBlobItem> ListBlobs = container.ListBlobs(string.Empty, true);

foreach (var item in ListBlobs)
{
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(item.ToString());
    string path= (@"C:\Users\Ay\Downloads\AzureLogs");
    blockBlob.DownloadToFile(path, FileMode.Open);
}

问题是什么?

最佳答案

问题是 item.ToString() 将返回“Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob”,因此不存在这样的 blob,从而导致 404 错误。

将该行更改为

CloudBlockBlob blockBlob = container.GetBlockBlobReference(((CloudBlockBlob)item).Name);

编辑: 本地写入文件的代码也不正确。 试试这个

foreach (var item in ListBlobs)
{
    string name = ((CloudBlockBlob) item).Name;
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(name);
    string path = (@"C:\Users\Ay\Downloads\AzureLogs\" + name);
    blockBlob.DownloadToFile(path, FileMode.OpenOrCreate);
}

关于c# - Azure Blob 存储下载所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30706550/

相关文章:

c# - CurrentApp.LicenseInformation 只允许我访问一次

c# - 渐变不透明度不起作用 (WPF)

azure - 如何检测 Azure 网站何时达到共享模式下的配额?什么时候该扩大规模?

azure : Can not install 3rd party setup due to access denied on registry

azure - 您可以从 azure pipeline build yml 内部执行另一个 build yml 吗?

java - C++/Java 绑定(bind) : In which side should multi-threading be implemented?

python - django admin 上传后提示文件下载

c# - TabIndex 无法正常工作的可能原因是什么

c# - Angular:无法通过 HttpResponse 返回自定义错误消息

http - BitsTransfer 不适用于在 Windows 7 上使用 http 或 https 的 megatools