ブラウザにAzureBLOBイメージファイルを表示し、ダウンロードを強制しないでください

Aug 16 2020

この質問は少し前に尋ねられました。今日は答えが違うことを願っています。

  • 3年前-Azureストレージファイルはブラウザへのダウンロードを強制します

Azure BLOBストレージを使用してWebサイトの画像(jpg)を保存しています。<img>タグ内のファイルに直接リンクしていますが、うまく機能しています(匿名アクセスが有効になっています)。問題は、ユーザーが画像(ファイルに直接リンクしている)をクリックすると、画像をダウンロードせざるを得なくなり、ブラウザーで表示できないことです。

BLOBストレージのヘッダーを設定して、ダウンロードを強制せずにブラウザーで直接表示できるようにする方法はありますか?

アップデート1:

これに基づいて、ダウンロードするのではなく、Azure Blob Storageからイメージを表示するにはどうすればよいですか?このhttps://social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in-ssrs-report-does-not-work

問題の原因となっているコンテンツタイプを設定していないことがわかりました。に設定する必要があり"image/jpeg"ます。しかし、それをどのように行うのかよくわかりません。これは私が画像を保存するために使用しているコードです。

using Microsoft.Azure.Storage.Blob

/// <summary>
/// Save a file to azure blob storage.
/// </summary>
/// <param name="name">Name of file</param>
/// <param name="file">filestream</param>
/// <param name="ct">Cancellationtoken</param>
public async Task<bool> SaveFile(Stream fileStream, string fileName, CancellationToken ct)
{
   CloudBlockBlob cloudBlockBlob = _blobContainer.GetBlockBlobReference(fileName);

   fileStream.Position = 0;
   await cloudBlockBlob.UploadFromStreamAsync(fileStream, ct);

   return true;
}

これに「.Content」または「Type」プロパティのタイプは見つかりませんでした。掘り続けます。

アップデート2:解決策が見つかった可能性があります:

cloudBlockBlob.Properties.ContentType = "image/jpg";

テスト

更新3:それはそれをしました。これを使用して画像とPDFの適切なコンテンツタイプを設定すると、ブラウザで表示できるようになります。

if (fileName.EndsWith(".jpg"))
{
    cloudBlockBlob.Properties.ContentType = "image/jpg";
}
else if (fileName.EndsWith(".pdf"))
{
    cloudBlockBlob.Properties.ContentType = "application/pdf";
}

回答

3 JensB Aug 16 2020 at 03:42

詳細については、質問を参照してください。ただし、コンテンツタイプの設定は次の方法で実行できます。

cloudBlockBlob.Properties.ContentType = "image/jpg";