แสดงไฟล์รูปภาพ Azure blob ในเบราว์เซอร์และอย่าบังคับดาวน์โหลด

Aug 16 2020

คำถามนี้เคยถามมาก่อนหน้านี้ไม่นาน ฉันหวังว่าคำตอบจะแตกต่างออกไปในวันนี้

  • 3 ปีที่แล้ว - ไฟล์จัดเก็บ Azure บังคับให้ดาวน์โหลดไปยังเบราว์เซอร์

ฉันใช้ที่เก็บข้อมูล Azure blob เพื่อบันทึกภาพ (jpg) สำหรับเว็บไซต์ ฉันกำลังเชื่อมโยงโดยตรงกับไฟล์ใน<img>แท็กของฉันและใช้งานได้ดี (ได้เปิดใช้งานการเข้าถึงแบบไม่ระบุตัวตน) ปัญหาคือหากผู้ใช้คลิกที่รูปภาพ (ซึ่งเชื่อมโยงไปยังไฟล์โดยตรง) ผู้ใช้จะถูกบังคับให้ดาวน์โหลดและไม่สามารถดูได้ในเบราว์เซอร์

มีวิธีตั้งค่าส่วนหัวสำหรับที่เก็บข้อมูลแบบหยดเพื่อให้สามารถดูได้โดยตรงในเบราว์เซอร์และไม่บังคับให้ดาวน์โหลด

อัปเดต 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";