Изображения хранилища BLOB-объектов - Azure

У меня есть некоторые проблемы с изображениями, которые я загружаю через мой веб-API в общедоступный контейнер в моем хранилище BLOB-объектов. Проблема в том, что мне нужно, чтобы изображение, которое я загружал через API, должно быть доступно для просмотра. Я имею в виду, что, когда вы размещаете публичную ссылку в браузере, вы можете видеть изображение в браузере, но на самом деле, когда я помещаю ссылку, изображение сделать загрузку изображения и не показывать мне ничего в браузере. Но когда я загружаю изображение через портал Azure, я могу видеть изображение так, как я хочу... У меня открыт контейнер, и я не знаю, что еще делать.... мой код для загрузки изображения:

    private readonly CloudBlobContainer blobContainer;

    public UploadBlobController()
    {
        var storageConnectionString = ConfigurationManager.AppSettings["StorageConnectionString"];
        var storageAccount = CloudStorageAccount.Parse(storageConnectionString);
        var blobClient = storageAccount.CreateCloudBlobClient();
        blobContainer = blobClient.GetContainerReference("messagesthredimages");
        blobContainer.CreateIfNotExists();
        blobContainer.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
    }

    [HttpPost]
    [Route("UploadImagetoBlob")]
    public async Task<IHttpActionResult> UploadImagetoBlob()//string imagePath
    {
        try
        {
            var image = WebImage.GetImageFromRequest();
            var imageBytes = image.GetBytes();
            var blockBlob = blobContainer.GetBlockBlobReference(image.FileName);
            blockBlob.Properties.ContentType = "messagesthreadimages/" + image.ImageFormat;
            await blockBlob.UploadFromByteArrayAsync(imageBytes, 0, imageBytes.Length);
            return Ok(blockBlob.Uri.ToString());
        }
        catch (Exception)
        {
            return BadRequest();
        }

    }

Примеры, я надеюсь, что кто-нибудь может помочь мне с этим.

Что я хочу => Исправить
Что я не хочу => Неправильно

2 ответа

Решение

Я сталкивался с той же проблемой раньше. Браузеры загружают файл, когда не знают формат (тип файла). Если вы отслеживаете файлы с помощью приложения для настольного компьютера (не знаете, где находится эта опция на портале), вы найдете типы файлов.

Эти типы файлов устанавливаются на основе blockBlob.Properties.ContentType вы настраиваете Вам нужно осмотреть и проверить, что именно image.ImageFormat возвращается. Браузер будет отображать изображение, только если для этого значения установлено что-то вроде "image/jpeg", Однако, так как вы используете "messagesthreadimages/" + image.ImageFormatэто может быть что-то вроде "messagesthreadimages/image/jpeg",

Как сказал Невилл, у вас есть неправильное понимание, когда вы вызываете метод SetProperties, такой как blockBlob.Properties.ContentType.

Content-Type указывает тип мультимедиа содержимого сообщения.

Тип содержимого изображения позволяет включать в сообщения стандартизированные файлы изображений. Для более подробной информации, вы можете обратиться к этой ссылке.

image/g3fax [RFC1494]
image/gif [RFC1521]
image/ief (Image Exchange Format) [RFC1314]
image/jpeg [RFC1521]
image/tiff (Tag Image File Format) [RFC2301]

Я прочитал эту статью, и кажется, что вы бы настроить ContentType изображения. Итак, вы можете изменить код, как показано ниже:

blockBlob.Properties.ContentType = "image/" + image.ImageFormat;
Другие вопросы по тегам