Chrome открывает текст вместо PDF с некоторыми каплями из Azure - PullRequest
2 голосов
/ 16 мая 2019

Я работаю над приложением Angular, и у меня есть следующий код для открытия содержимого блоба в браузере или его загрузки (включая обходной путь для Edge):

if (openFile) {
    // Open blobs in new tab
    window.open(URL.createObjectURL(myBlob), "_blank");
} else {
    // Edge workaroud for downloading file
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(myBlob, file.name);
    } else {
        let fileURL = URL.createObjectURL(myBlob);
        let a = document.createElement("a");
        a.href = fileURL;
        a.download = filenameFromHeader;
        document.body.appendChild(a);
        a.click();
        URL.revokeObjectURL(fileURL);
    }
}

Как вы можете видеть приложениеразрешить пользователям открывать большие двоичные объекты в новой вкладке браузера, а не загружать их, в зависимости от того, на какую кнопку они нажимают.

Это работает как чудо, все браузеры открывают и загружают (за исключением открытия больших двоичных объектов)в Edge, который заблокирован по соображениям безопасности).

Проблема в том, что у меня есть 2 среды Azure, и только в одной из них открытие файла работает всегда с каждым файлом PDF.В другой среде, с некоторыми файлами PDF, Chrome вместо вкладки открывает вкладку с двоичным содержимым PDF.

Здесь указаны Content-Disposition и Content-Type взаголовок ответа поступает из обеих сред Azure:

Content-Disposition: attachment; filename='myDocument.pdf'
Content-Type: application/octet-stream

Итак, поскольку приложение Angular одинаково, файлы PDF одинаковы, используемый браузер Chrome одинаков, что может быть не так с одним изсредах Azure, в которых с некоторыми файлами PDF соответствующий BLOB-объект отображается в виде текста вместо PDF?

...