私はファイルパスを持っているため、AzureストレージからPDFファイルバイトを読みたいと思っています。
https://hostedPath/pdf/1001_12_Jun_2012_18_39_05_594.pdf
パス名を直接渡すことで、ブロブ ストレージからコンテンツを読み取ることは可能ですか? また、私はc#を使用しています。
私はファイルパスを持っているため、AzureストレージからPDFファイルバイトを読みたいと思っています。
https://hostedPath/pdf/1001_12_Jun_2012_18_39_05_594.pdf
パス名を直接渡すことで、ブロブ ストレージからコンテンツを読み取ることは可能ですか? また、私はc#を使用しています。
ブロブが公開されている限り、ブロブの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);
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");