4

azure blob にファイルをアップロードする aspnet アプリがあります。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;
    }

このようにして、私はたった1つのファイルを取得しています。しかし、 http://myaccount.windowsazure.blob.net/MyProtocolID-01/MyDocumentID-01/内のすべてのファイルを表示してダウンロードする必要があります

ありがとう

4

3 に答える 3

2

詳細を追加します。クライアント ライブラリによって提供されるリスト API のいずれかを使用する必要があります: CloudBlobContainer.ListBlobs()、CloudBlobContainer.ListBlobsSegmented()、および CloudBlobContainer.ListBlobsSegmentedAsync() (およびさまざまなオーバーロード)。ディレクトリ プレフィックスを指定すると、サービスはプレフィックスに一致する BLOB のみを列挙します。その後、各 BLOB をダウンロードできます。シナリオによっては、'useFlatBlobListing' 引数を確認することもできます。 http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudblobcontainer.listblobs.aspx

さらに、AzCopy ( http://blogs.msdn.com/b/windowsazurestorage/archive/2012/12/03/azcopy-uploading-downloading-files-for-windows-azure-blobs.aspxを参照) も、このシナリオをサポートしています。特定のディレクトリ パスにあるすべての BLOB をダウンロードします。

于 2013-11-14T23:18:06.190 に答える