![](/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.