Показать файл изображения BLOB-объекта Azure в браузере и не загружать принудительно
Этот вопрос задавали раньше. Я надеюсь, что сегодня ответ будет другим.
- 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";
}
Ответы
Подробности смотрите в вопросе. Но установить тип контента можно с помощью:
cloudBlockBlob.Properties.ContentType = "image/jpg";