2013-11-28 4 views
7

Возможно ли полностью загрузить файл PDF через запрос XHR? Я знаю, что есть много других обсуждений уже по этой теме, но, к сожалению, я их до сих пор не удовлетворен. Я использую AngularJs и делая запрос, используя его метод $Http. Он не возвращает всплывающее окно загрузки файла. Но если я нажму с тем же URL-адресом в новом окне браузера, то получаю всплывающее окно. Я уже пробовал work-arround и его рабочий режим, то есть document.location.href = url;, но если я это сделаю, то я не смогу показать ожидающее изображение до момента, когда всплывающее окно загрузки будет готово и появилось. Так что для меня недостаточно работы для работы. Я хотел бы сделать это с подлинным способом через запрос на сервер, через который я также смогу обработать альтернативные потоки результата.Загрузка PDF-файла через XHR-запрос

+0

Итак, вы хотите скачать pdf-файл с помощью ajax-запроса? – muneebShabbir

+0

Да, но в режиме angular.js или jQuery ... так что я могу обрабатывать все альтернативные потоки. как загрузка изображения ... –

ответ

10

Посмотрите на это JQuery плагин jquery-file-download-plugin и вот демонстрационная страница этого плагина demo . Я думаю, что он динамически вставляет iframe в DOM и производит внешний вид так же, как запрос AJAX. Это может быть полезно для вас.

+0

Это сработало для меня, я необходимо добавить cookie в ответ http на стороне сервера ... Спасибо. –

+1

Спасибо, человек, ты спасаешь мою жизнь !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! – sergioBertolazzo

4

Это, конечно, зависит от размера файла PDF, но это будет работоспособным подход, если PDF не слишком велик:

  1. Показать «ожидающего изображение» и скачать PDF с помощью $http ,

    $http.get('http://my.example.com/foo.pdf').success(function(pdfData) { 
        ... do something with pdfData ... 
    }); 
    
  2. Преобразование pdfData для кодирования Base64 и использовать data URI scheme для создания URL для скачанного файла PDF.

  3. Перенаправить на этот URL.
+0

Как я могу преобразовать этот pdfData в базу 64 ... Я использую функцию btoa, но он показывает некоторые ошибки ... –

+0

Идеальное решение для небольших PDF-файлов с коротким сроком службы – miron

Смежные вопросы