使用 Response::download 在 Laravel 中下载文件
许多开发人员在尝试允许用户在不导航的情况下在视图中下载文件时遇到挑战。本文解决了常见问题并提供了解决方案。
问题:
文件路径“/public/download/info.pdf”不存在,下载按钮导航到用户到不同的视图而不是启动下载。
潜力解决方案:
1.正确的文件路径:
第一个问题是由错误的文件路径引起的。您应该指定完整的物理路径,而不是“./download/info.pdf”:
<code class="php">$file = public_path(). "/download/info.pdf";</code>
2.避免导航:
要阻止用户导航,请将按钮替换为以下内容:
<code class="html"><a href="#" onclick="downloadFile();" class="btn btn-large pull-right"><i class="icon-download-alt"></i> Download Brochure</a></code>
3. JavaScript 函数:
添加 JavaScript 函数来处理下载:
<code class="javascript">function downloadFile() { var url = "/download"; window.location.href = url; return false; }</code>
4.更新控制器:
修改控制器以返回具有正确标头的文件:
<code class="php">public function getDownload() { $headers = ['Content-Type' => 'application/pdf']; return response()->download($file, 'filename.pdf', $headers); }</code>
Laravel 5 及更高版本的注意事项:
对于版本5及更高版本,使用response()->download()而不是Response::download()。此外,标头数组应格式化为关联数组:
<code class="php">$headers = [ 'Content-Type' => 'application/pdf', ];</code>
通过实施这些更新,“下载”按钮将在同一视图上启动文件下载,而无需引导用户离开。
以上是如何在没有导航的情况下从 Laravel 中的视图下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!