кода ниже предлагаю сохранить файл у пользователя:
// Работает, т.е. создает правильный файл
let link=document.createElement('a');
link.href='data:application/pdf;base64,'+answerObj['pdf_file_bytes_base64']
link.download='report_.pdf'
link.click();
Теперь я хочу что бы браузер ещё и пытался его открыть сразу. Конечно наш браузер не знает что есть у пользователя на компе, но у меня есть строка файла в base64 и я хочу её в новую вкладку отправить.
делаю следующим образом:
window.open("data:application/pdf;base64, " + answerObj['pdf_file_bytes_base64'], '', "height=600,width=800");
Мне открывается пустое окно. В адресной строке имею следующий текст: about:blank#blocked
Вопрос:
Возможно это как-то провернуть?
Что я делаю не так?)
Посмотрите вот это обсуждение, может что-то оттуда сработает https://overcoder.net/q/2917031/показать-данные-base64-pdf-с-помощью-windowopen-в-новой-версии-chrome Но не факт, что это сработает в любом браузере.
Спасибо, изучу этот вариант
Этот вариант сработал для хрома, и маленького файла PDF (100-200KB). Но он не работает для файла в 4MB. Страница подвисает и грузиться до бесконечности. Сейчас проверяю на других браузерах. Думаю это максимум, который можно выжать из этого функционала. Сейчас рассматриваю создание контейнера на текущей странице и встроить туда iframe с пдф документом. Ещё раз спасибо
попробуйте блоб сделать и его открыть, как в том же вопросе/ответе посоветовали: https://stackoverflow.com/a/46807536 edit:не та ссылка
ещё кстати большой вопрос, где вы получаете base64 и зачем
Через блоб пытался все утро, и в конце концов пришел сюда. Блоб вообще выдавал что-то типо ошибки pdf-файла.
https://jsfiddle.net/alpeg/rng19432/
А у вас это работает?
да. попробуйте так: https://jsfiddle.net/alpeg/rng19432/
Обсуждают сегодня