Azure blob görüntü dosyasını tarayıcıda gösterin ve indirmeye zorlamayın
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
Ayrıntılar için soruya bakın. Ancak içerik türü ayarı şu şekilde yapılabilir:
cloudBlockBlob.Properties.ContentType = "image/jpg";