Azure blob görüntü dosyasını tarayıcıda gösterin ve indirmeye zorlamayın

Aug 16 2020

Bu soru bir süre önce sorulmuştu. Umarım bugün cevap farklıdır.

  • 3 yıl önce - Azure depolama dosyaları tarayıcıya indirilmeye zorlanıyor

Bir web sitesi için görüntüleri (jpg) kaydetmek için Azure blob depolamasını kullanıyorum. Doğrudan <img>etiketlerimdeki dosyalara bağlanıyorum ve bu harika çalışıyor (anonim erişimi etkinleştirdim). Sorun şu ki, kullanıcı resmi (doğrudan dosyaya bağlanan) tıklarsa onu indirmeye zorlanır ve tarayıcıda görüntüleyemez.

Blob depolamanın başlıklarını doğrudan tarayıcıda görüntülemeye izin verecek ve indirmeye zorlamayacak şekilde ayarlamanın bir yolu var mı?

Güncelleme 1:

Buna göre Azure Blob Depolama'dan bir görüntüyü indirmek yerine nasıl görüntüleyebilirim? ve buhttps://social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in-ssrs-report-does-not-work

Soruna neden olan içerik türünü ayarlamadığımı fark ettim. Ayarlamam gerek "image/jpeg". Ancak bunu nasıl yapacağımdan pek emin değilim. Bu, resmi saklamak için kullandığım kod.

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;
}

Bunun üzerinde herhangi bir ".Content" veya "Type" özelliği bulamadım. Kazmaya devam edecek.

Güncelleme 2: çözümü bulmuş olabilir:

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

Test yapmak

Güncelleme 3: Başardı. Görüntüler ve pdf için uygun içerik türlerini ayarlamak için bunu kullanın ve artık tarayıcıda görüntülenebilir.

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

Yanıtlar

3 JensB Aug 16 2020 at 03:42

Ayrıntılar için soruya bakın. Ancak içerik türü ayarı şu şekilde yapılabilir:

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