2016-03-11 114 views
0

我想下载由AngularJs中的laravel生成的pdf文件。到目前为止,我已经能够从laravel获取文件,但是当我单击该操作时,Angular不会下载该文件,而只是返回包含该文件的响应,如下图所示。文件下载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