Скачать файл PDF из строки, используя Jquery - PullRequest
1 голос
/ 23 июля 2010

Все,

У меня есть приложение PHP5, написанное на Zend Framework и MVC.На моей домашней странице я хочу включить функциональность для загрузки динамически сгенерированного файла PDF.Это делается следующим образом:

  1. Пользователь щелкает ссылку «загрузить файл».
  2. При нажатии происходит вызов AJAX на контроллер PHP, который принимает данные формы, генерируетpdf и возвращает его в виде строки.
  3. Моя функция javascript теперь содержит строку pdf.
  4. Как отобразить пользователю диалоговое окно «Открыть / Сохранить» для загрузки файла pdf из javascript?

У меня есть следующий код:

<script type="text/Javascript">
   $('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    alert(html_input);  // This has the pdf file in a string.
                    //ToDo: Open/Save pdf file dialog using this string..
                }
            });
});
</script>

Спасибо

Ответы [ 3 ]

1 голос
/ 23 июля 2010

Я бы постарался сделать это простым. Просто добавьте в форму target="_blank" и затем PHP принудительно загрузит файл.

HTML-код

<script type="text/Javascript">
$('#dlcontent').click(function(e) {
  e.preventDefault();
  $("#frmMyContent").submit();
});
</script>

<form id="formMyContent" action="/downloads/dlpolicies" target="_blank" ... >
...
</form>

Затем на стороне вашего сервера вы должны указать PHP отправлять ответ в виде «загрузки».

PHP код

$this->getResponse()
  ->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
  ->setHeader('Content-type', 'application/pdf');

Получил это отсюда: Zend Framework как установить заголовки

0 голосов
/ 23 июля 2010

Добавьте элемент на свою страницу, куда вы хотите перейти по ссылке.Это может быть span, div или ячейка в таблице или что угодно.Дайте ему уникальный идентификатор.Затем используйте jQuery, чтобы установить HTML этого элемента.Я называю это somepageelement здесь.

$('#dlcontent').click(function(e) {
      $.ajax({
                type: 'POST',
                url: "/downloads/dlpolicies",
                data:  $("#frmMyContent").serialize(),
                cache: false,
                dataType: "html",
                success: function(html_input){
                    $('#somepageelement').html('<a href="' + html_input + '">Click here to download the pdf</a>');
                }
            });
});
0 голосов
/ 23 июля 2010

Самый простой способ сделать это - открыть новое окно с URL-адресом строки PDF.

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