Azure Blob всегда загружается при навигации по URL-адресу

В нашем приложении мы даем пользователю возможность загрузить документ на учетную запись azure blob storage. После загрузки документа или изображения ему присваивается некоторый url (https://name.blob.core.windows.net/container/file-name.jpg). Если документ представляет собой изображение или PDF файл или какой-либо файл, который может быть отображен браузером, мы пытаемся отобразить его в браузере, не требуя от пользователя загрузки файла. Если мы просто открываем новое окно или вкладку и направляем пользователя на blob uri в IE, изображение или pdf правильно отображаются в браузере. Но, если мы попытаемся просто открыть новое окно, указывающее на uri в Chrome, FireFox или Safari, оно просто загружает файл, а не отображает его в браузере.

Есть ли способ заставить последние три браузера просто отображать файл, а не загружать его?

Ответы

Ответ 1

Это связано с тем, что вы не установили свойство типа содержимого для blob (по умолчанию это приложение/октет-поток, который запускает загрузку в большинстве браузеров), Если вы хотите, чтобы файлы PDF отображались правильно, вам нужно будет изменить тип содержимого ваших файлов PDF на приложение /pdf (изображение/jpeg для jpeg файлов).

Вы можете изменить тип контента с помощью обычных инструментов, таких как Azure Storage Explorer, Cloud Storage Studio, CloudBerry, CloudXplorer,... или с помощью SDK. Обратите внимание, что некоторые из этих инструментов автоматически устанавливают тип содержимого вправо после загрузки файла.

Ответ 2

   blob.Properties.ContentType = "application/pdf";

//Получить тип содержимого файла по расширению

    public static string GetFileContentType(string FilePath)
    {
        string ContentType = String.Empty;
        string Extension = Path.GetExtension(FilePath).ToLower();

        switch (Extension)
        {
            case ConstantUtility.FILE_EXTENSION_PDF:
                ContentType = "application/pdf";
                break;
            case ConstantUtility.FILE_EXTENSION_TXT:
                ContentType = "text/plain";
                break;
            case ConstantUtility.FILE_EXTENSION_BMP:
                ContentType = "image/bmp";
                break;
            case ConstantUtility.FILE_EXTENSION_GIF:
                ContentType = "image/gif";
                break;
            case ConstantUtility.FILE_EXTENSION_PNG:
                ContentType = "image/png";
                break;
            case ConstantUtility.FILE_EXTENSION_JPG:
                ContentType = "image/jpeg";
                break;
            case ConstantUtility.FILE_EXTENSION_JPEG:
                ContentType = "image/jpeg";
                break;
            case ConstantUtility.FILE_EXTENSION_XLS:
                ContentType = "application/vnd.ms-excel";
                break;
            case ConstantUtility.FILE_EXTENSION_XLSX:
                ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                break;
            case ConstantUtility.FILE_EXTENSION_CSV:
                ContentType = "text/csv";
                break;
            case ConstantUtility.FILE_EXTENSION_HTML:
                ContentType = "text/html";
                break;
            case ConstantUtility.FILE_EXTENSION_XML:
                ContentType = "text/xml";
                break;
            case ConstantUtility.FILE_EXTENSION_ZIP:
                ContentType = "application/zip";
                break;
            default:
                ContentType = "application/octet-stream";
                break;

        }


        return ContentType;
    }

Используйте это, чтобы установить тип содержимого капли при сохранении.

Установить Content-типа мультимедийных файлов, хранящихся в Blob

Ответ 3

Для загрузки файлов через PowerShell используйте синтаксис ниже, чтобы установить тип содержимого во время загрузки.

Set-AzureStorageBlobContent -File <localFilePath> -Container <containerName> -Properties @{"ContentType"="text/plain"} -Context $ctx

Выше я установил тип содержимого blob в text/plain, полезный при загрузке JSON и HTML файлов, которые будут использоваться с шаблонами. Список значений заголовков содержимого здесь.