文件下载 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.