ホームページ >バックエンド開発 >PHPチュートリアル >ナビゲーションなしでLaravelのビューからファイルをダウンロードするにはどうすればよいですか?

ナビゲーションなしでLaravelのビューからファイルをダウンロードするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 12:23:291053ブラウズ

How to Download Files from a View in Laravel Without Navigation?

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()->down​​load() を使用してください。さらに、ヘッダー配列は連想配列としてフォーマットする必要があります:

<code class="php">$headers = [
    'Content-Type' => 'application/pdf',
];</code>

これらの更新を実装すると、[ダウンロード] ボタンはユーザーを移動させることなく、同じビューでファイルのダウンロードを開始します。

以上がナビゲーションなしでLaravelのビューからファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。