Laravelでファイルをダウンロードする方法


  1. ルーティングの設定: まず、ファイルのダウンロードを処理するための適切なルートを設定する必要があります。例えば、以下のようにroutes/web.phpファイルにルートを定義します。
Route::get('/download/{filename}', 'DownloadController@download')->name('download');
  1. ダウンロード用のコントローラの作成: 次に、ダウンロードを処理するためのコントローラを作成します。DownloadControllerという名前のコントローラを作成し、downloadメソッドを定義します。
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class DownloadController extends Controller
{
    public function download($filename)
    {
        $path = storage_path('app/files/' . $filename);
        if (!Storage::exists($path)) {
            abort(404);
        }
        return response()->download($path);
    }
}

上記の例では、storage/app/files/ディレクトリ内のファイルをダウンロードします。ファイルが存在しない場合は、HTTPステータスコード404を返します。

  1. ビューの作成: ファイルのダウンロードリンクを表示するために、ビューを作成します。以下は、例としてresources/views/download.blade.phpファイルのコードです。
<a href="{{ route('download', ['filename' => 'example.pdf']) }}">ファイルをダウンロードする</a>

上記の例では、routeヘルパ関数を使用してダウンロード用のルートへのURLを生成し、filenameパラメータを指定しています。

これで、Laravelでファイルをダウンロードする準備が整いました。作成したビューを表示するルートを作成し、ブラウザでアクセスすると、指定したファイルがダウンロードされます。