【问题标题】:File download angular and Laravel文件下载 Angular 和 Laravel
【发布时间】:2016-03-11 14:09:08
【问题描述】:

我正在尝试在 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');

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。这是有道理的。
    • 我需要使用 ZMLHttpResponse 的原因是我需要在请求中发送一个身份验证令牌。有没有办法使用 $location.url() 来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 2017-03-24
    • 2015-07-09
    • 1970-01-01
    • 2021-04-10
    • 2020-05-25
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多