Невозможно загрузить блоб, загруженный в iframe - PullRequest
0 голосов
/ 13 февраля 2019

Ниже приведен мой код, который устанавливает атрибут src iframe для созданного мной URL-адреса большого двоичного объекта: -

function downloadFromIframeUsingBody(filebody: any) {
  const iframe = document.createElement('iframe');
  iframe.setAttribute('style', 'display: none;');
  const newurl = window.URL.createObjectURL(new Blob([filebody.data],{type: 'application/pdf'}));
  iframe.setAttribute('src', newurl);
  const register = () => {
    if (iframe.contentWindow) {
      setTimeout(function() {
        // Clean after 1 minute, by then it should already have started downloading
        iframe.parentNode!.removeChild(iframe);
      }, 60000);
    }  else {
      setTimeout(register, 100);
    }
  };
  register();
  document.body.appendChild(iframe);
}

Мне бы хотелось, чтобы этот iframe загружал большой двоичный объект, содержащий pdf, для загрузки.автоматически.В настоящее время ничего не происходит, когда это выполняется.

1 Ответ

0 голосов
/ 13 февраля 2019

Если вы имеете в виду «загрузить» как «сохранить на диске», просто используйте HTMLAnchorElement и его атрибут download.

Или даже обрабатывайте все крайние случаи (старые причуды IE и Safari) с легким весом FileSaver скрипт.

var blob = new Blob(["I'm just a text file..."], {type: 'plain/text'});

saveAs(blob, 'myFile.txt');
<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.js"></script>

Обратите внимание, что это верно для любых случаев.iframe hack - это просто плохой взлом, который следует использовать только тогда, когда определено, что никакие другие более эффективные способы не будут работать.

Теперь, чтобы объяснить, почему он не работает, это потому, что браузеры действительно могут отображатьPDF-файлы, и, таким образом, он [попытается] сделать это вместо принудительной загрузки.

<iframe src="https://cdn.jsdelivr.net/gh/mozilla/pdf.js/test/pdfs/S2.pdf"></iframe>

(Обратите внимание, что в текущем Chrome, похоже, есть ошибка, которая приводит к сбою чтения PDF-файлов при вложенных фреймах, поэтому здесь - ссылка на плункер, где вы можете увидеть его вживую в этом браузере, нажав кнопку расширения на правой панели.

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