![](/img/trans.png)
[英]Laravel Response::download not working and pdf file not downloaded when clicked button
[英]"The Response callback must not be null" when trying to send a PDF file download in Laravel 7
在我的 Laravel 7 应用程序中,我有一个动态生成 PDF 的路径,我希望浏览器将其视为文件下载。
在写这篇文章时,我发现了一些关于 Laravel 使用保存在文件系统上的文件来提供文件下载的文档和问题,但就我而言,我不想将 pdf 存储在文件系统中。 我只想在用户点击路由时动态生成,然后浏览器下载pdf。
我正在使用 mpdf 库,它似乎正在正确地形成一个 pdf 文件。 然而,Laravel 抛出了一个The Response callback must not be null
LogicException。 在浏览器中,我看到显示的 PDF 数据,然后是异常堆栈跟踪。
这是控制器方法:
public function pdf($id) {
$manual = new \App\manual($id);
$contents = view('admin.manual')->with($manual)->render();
$mpdf = New \Mpdf\Mpdf();
$mpdf->WriteHtml($contents);
$pdf = $mpdf->output();
return response()->streamDownload($pdf, 'manual.pdf');
}
在这个截图中,你可以看到 PDF 文件的数据,它告诉我它正在生成和交付:
我从 Symfony 发现了这个 5 年前的问题,用于相同的异常消息,但它似乎已经解决了很长时间。 我没有发现与 Laravel 7 相关的任何其他内容。
如何在 Laravel 7 中正确指定数据的 pdf 文件下载?
在我的 Laravel 7 应用程序中,我有一个动态生成 PDF 的路径,我希望浏览器将其视为文件下载。
在写这篇文章时,我发现了许多关于 Laravel 使用保存在文件系统上的文件来提供文件下载的文档和问题,但就我而言,我不想将 pdf 存储在文件系统中。 我只想在用户点击路由时动态生成,然后浏览器下载pdf。
我正在使用 mpdf 库,它似乎正确地形成了一个 pdf 文件。 然而,Laravel 抛出了一个The Response callback must not be null
LogicException。 在浏览器中,我看到显示的 PDF 数据,然后是异常堆栈跟踪。
这是控制器方法:
public function pdf($id) {
$manual = new \App\manual($id);
$contents = view('admin.manual')->with($manual)->render();
$mpdf = New \Mpdf\Mpdf();
$mpdf->WriteHtml($contents);
$pdf = $mpdf->output();
return response()->streamDownload($pdf, 'manual.pdf');
}
在这个截图中,你可以看到 PDF 文件的数据,它告诉我它正在生成和交付:
我从 Symfony 中发现了这个 5 年前的问题,用于相同的异常消息,但它似乎已经解决了很长时间。 我没有发现与 Laravel 7 相关的任何其他内容。
如何在 Laravel 7 中正确指定数据的 pdf 文件下载?
我正在努力解决同样的问题并使用上面的帖子解决了它。 但是在 Lumen 8 中,我需要将 streamDownload 更改为流。
这是我的代码:
$stream = $mpdf->Output($filename, "I");
return response()->stream(function() use ($stream) { echo $stream; }, 200, ['Content-type'=>'application/pdf']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.