11

私はファイルパスを持っているため、AzureストレージからPDFファイルバイトを読みたいと思っています。

https://hostedPath/pdf/1001_12_Jun_2012_18_39_05_594.pdf

パス名を直接渡すことで、ブロブ ストレージからコンテンツを読み取ることは可能ですか? また、私はc#を使用しています。

4

2 に答える 2

13

ブロブが公開されている限り、ブロブのURLを絶対に渡すことができます。たとえば、HTML画像またはリンクに埋め込むことができます。

<a href="https://myaccount.blob.core.windows.net/pdf/1001_12_Jun_2012_18_39_05_594.pdf">click here</a>

デフォルトでは、blobコンテナはプライベートです。パブリック読み取りアクセスを有効にするには、コンテナーの作成時にコンテナーのアクセス許可を変更する必要があります。例えば:

var blobStorageClient = storageAccount.CreateCloudBlobClient();
var container = blobStorageClient.GetContainerReference("pdf");
container.CreateIfNotExist();

var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
于 2012-06-13T12:42:13.387 に答える
9

David が説明したように、コンテナーが非公開でない限り、その URL を介して任意の BLOB にアクセスできます。

コンテナーが非公開の場合でも、 Shared Access Signatures (SAS) を使用して、URL からファイルにアクセスできるようにすることができます。これにより、ユーザーにファイルをダウンロードする権利を与えることができます (SAS を提供することにより、通常は URL に追加されます) が、時間内に制限されます。

これは、たとえばファイルを保護するために有料のダウンロードを行っている場合に最適ですが、誰かがお金を払った場合に限られた時間だけダウンロードできるようにします.

さて、あなたの質問では、C# を使用していると述べています。WPF/Windows フォーム/コンソール アプリケーションでファイルをダウンロードする場合は、WebClient を使用してファイルをダウンロードするだけです (コンテナーが公開されている場合、または URL に SAS を追加する場合)。

WebClient myWebClient = new WebClient();
myWebClient.DownloadFile("https://myaccount.blob.core.windows.net/pdf/1001_12_Jun_2012_18_39_05_594.pdf", @"D:\Data\myPdfFile.pdf");    
于 2012-06-13T13:24:12.557 に答える