文件下载角度和Laravel

时间:2016-03-11 14:09:08

标签: angularjs laravel laravel-5 angular-ui-router dompdf

我正在尝试下载由AngularJs中的laravel生成的pdf文件。到目前为止,我已经能够从laravel获取该文件但是当我单击该操作时,Angular不会下载该文件,而只返回包含该文件的响应,如下图所示。

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 个答案:

答案 0 :(得分:1)

由于$http.get()使用对服务器的异步调用,因此XMLHttpResponse对象捕获响应,而不是直接呈现给用户。向用户呈现PDF的最简单方法是跳过角度呼叫,例如,使用$location.url('/print-invoice');$window.open('/print-invoice');

如果您想坚持使用$http方法(例如,如果您希望能够根据文件获取的成功或失败执行某些操作),您需要捕获返回值从下载并使用HTML5 Blob methods。我建议使用类似Angular File Saver的内容。但它确实需要在服务器端进行更多工作,以确保数据位于correct format