文件下载 angular 和 Laravel
File download angular and Laravel
我正在尝试下载 laravel 在 AngularJs 中生成的 pdf 文件。到目前为止,我已经能够从 laravel 获取文件,但是当我单击该操作时,Angular 不会下载该文件,而只是 returns 包含该文件的响应,如图所示下面。
Response from laravel returns pdf file
如何下载文件?
Laravel
public function getPrintInvoice()
{
$pdf = PDF::loadView('crystal.invoice');
return $pdf->download('hello.pdf');
}
Angular
$http.get('print-invoice');
因为 $http.get()
使用对服务器的异步调用,响应由 XMLHttpResponse 对象捕获,而不是直接呈现给用户。向用户呈现 PDF 的最简单方法是跳过 angular 调用,例如使用 $location.url('/print-invoice');
或 $window.open('/print-invoice');
如果您想坚持使用 $http
方法(例如,如果您希望能够根据文件获取的成功或失败执行某些操作),则需要捕获 return 值从下载和使用 HTML5 Blob methods. I'd recommend using something like Angular File Saver. But it does require a bit more work on the server side to ensure the data is in the correct format.
我正在尝试下载 laravel 在 AngularJs 中生成的 pdf 文件。到目前为止,我已经能够从 laravel 获取文件,但是当我单击该操作时,Angular 不会下载该文件,而只是 returns 包含该文件的响应,如图所示下面。
Response from laravel returns pdf file
如何下载文件?
Laravel
public function getPrintInvoice()
{
$pdf = PDF::loadView('crystal.invoice');
return $pdf->download('hello.pdf');
}
Angular
$http.get('print-invoice');
因为 $http.get()
使用对服务器的异步调用,响应由 XMLHttpResponse 对象捕获,而不是直接呈现给用户。向用户呈现 PDF 的最简单方法是跳过 angular 调用,例如使用 $location.url('/print-invoice');
或 $window.open('/print-invoice');
如果您想坚持使用 $http
方法(例如,如果您希望能够根据文件获取的成功或失败执行某些操作),则需要捕获 return 值从下载和使用 HTML5 Blob methods. I'd recommend using something like Angular File Saver. But it does require a bit more work on the server side to ensure the data is in the correct format.