Показать файл изображения BLOB-объекта Azure в браузере и не загружать принудительно

Aug 16 2020

Этот вопрос задавали раньше. Я надеюсь, что сегодня ответ будет другим.

  • 3 года назад - файлы хранилища Azure принудительно загружаются в браузер

Я использую хранилище BLOB-объектов Azure для сохранения изображений (jpg) для веб-сайта. Я связываюсь напрямую с файлами в своих <img>тегах, и это отлично работает (включен анонимный доступ). Проблема в том, что если пользователь нажимает на изображение (которое ссылается непосредственно на файл), он вынужден загрузить его и не может просматривать его в браузере.

Есть ли способ установить заголовки для хранилища BLOB-объектов, чтобы их можно было просматривать прямо в браузере, а не принудительно загружать.

Обновление 1:

Основываясь на этом, как я могу просмотреть изображение из хранилища BLOB-объектов Azure, а не загружать его? и это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";