2016-03-11 2 views
0

Я пытаюсь загрузить pdf-файл, созданный laravel в AngularJs. До сих пор мне удалось получить файл из laravel, но когда я нажимаю действие, Angular не загружает файл, а просто возвращает ответ, содержащий файл, как на диаграмме ниже.Загрузка файла угловой и Laravel

Response from laravel returns pdf file

Как я могу получить файл для загрузки?

Laravel

public function getPrintInvoice() 
    { 
     $pdf = PDF::loadView('crystal.invoice'); 
     return $pdf->download('hello.pdf'); 
    } 

Угловое

$http.get('print-invoice'); 

ответ

1

Поскольку $http.get() использует асинхронный вызов к серверу ответ захвачен объектом XMLHttpResponse, а не представлено непосредственно пользователю. Самый простой способ представления PDF пользователю - пропустить угловой вызов, например. использовать $location.url('/print-invoice'); или $window.open('/print-invoice');

Если вы хотите придерживаться $http методов (например, если вы хотите, чтобы быть в состоянии выполнить какое-либо действие на основе успеха или неудачи файла ГЭТ) вам необходимо захватить возвращаемое значение скачать и использовать HTML5 Blob methods. Я бы рекомендовал использовать что-то вроде Angular File Saver. Но для обеспечения того, чтобы данные находились в correct format, это требует немного больше работы на стороне сервера.

+0

Спасибо большое. В этом есть смысл. – madSkillz

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