如何下载Azure容器目录中的所有文件?

gog*_*gog 5 asp.net-mvc azure azure-storage azure-blob-storage

我有一个 aspnet 应用程序,我将文件上传到 azure blob。我知道 azure 不会在容器中创建结构路径,而只是创建 blob,但您可以模拟在 uri 上放置“/”的目录。

即我上传文件列表,我的 uri 是这样的

http://myaccount.windowsazure.blob.net/MyProtocolID-01/MyDocumentID-01/FileName01.jpg http://myaccount.windowsazure.blob.net/MyProtocolID-01/MyDocumentID-01/FileName02.jpg http:// myaccount.windowsazure.blob.net/MyProtocolID-01/MyDocumentID-01/FileName03.jpg

我的下载方法:

 public RemoteFile Download(DownloadRequest request)
    {
        var fileFinal = string.Format("{0}/{1}/{2}",request.IDProtocol ,request.IDDocument, request.FileName);

        var blobBlock = InitializeDownload(fileFinal);

        if (!blobBlock.Exists())
        {
            throw new FileNotFoundException("Error");
        }

        var stream = new MemoryStream();

        blobBlock.DownloadToStream(stream);

        return File(request.FileName)
    }

 private CloudBlob InitializeDownload(string uri)
    {
        var blobBlock = _blobClient.GetBlobReference(uri);
        return blobBlock;
    }
Run Code Online (Sandbox Code Playgroud)

这样,我只得到一个文件。但我需要查看并下载http://myaccount.windowsazure.blob.net/MyProtocolID-01/MyDocumentID-01/内的所有文件

谢谢

小智 2

添加更多细节。您将需要使用客户端库提供的列表 API 之一:CloudBlobContainer.ListBlobs()、CloudBlobContainer.ListBlobsSegmented() 和 CloudBlobContainer.ListBlobsSegmentedAsync()(以及各种重载)。您可以指定目录前缀,该服务将仅枚举与该前缀匹配的 blob。然后您可以下载每个 blob。您可能还想查看 \xe2\x80\x98useFlatBlobListing\xe2\x80\x99 参数,具体取决于您的情况。\n http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage .blob.cloudblobcontainer.listblobs.aspx

\n\n

此外,AzCopy(请参阅http://blogs.msdn.com/b/windowsazurestorage/archive/2012/12/03/azcopy-uploading-downloading-files-for-windows-azure-blobs.aspx)也支持这种情况下载给定目录路径中的所有 blob。

\n