- ルーティングの設定:
まず、ファイルのダウンロードを処理するための適切なルートを設定する必要があります。例えば、以下のように
routes/web.php
ファイルにルートを定義します。
Route::get('/download/{filename}', 'DownloadController@download')->name('download');
- ダウンロード用のコントローラの作成:
次に、ダウンロードを処理するためのコントローラを作成します。
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を返します。
- ビューの作成:
ファイルのダウンロードリンクを表示するために、ビューを作成します。以下は、例として
resources/views/download.blade.php
ファイルのコードです。
<a href="{{ route('download', ['filename' => 'example.pdf']) }}">ファイルをダウンロードする</a>
上記の例では、route
ヘルパ関数を使用してダウンロード用のルートへのURLを生成し、filename
パラメータを指定しています。
これで、Laravelでファイルをダウンロードする準備が整いました。作成したビューを表示するルートを作成し、ブラウザでアクセスすると、指定したファイルがダウンロードされます。