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 中国語 Web サイトの他の関連記事を参照してください。