Laravelでブラウザから直接ファイルをダウンロードする方法


  1. ファイルのパスを指定してダウンロードする方法:
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Storage;
public function downloadFile()
{
    $filePath = storage_path('app/public/example.pdf');
    $fileName = 'example.pdf';
    return Response::download($filePath, $fileName);
}

上記の例では、storage/app/publicディレクトリにあるexample.pdfファイルをダウンロードします。Response::download()メソッドを使用して、ファイルのパスとダウンロード時のファイル名を指定します。

  1. ファイルのコンテンツを生成してダウンロードする方法:
use Illuminate\Support\Facades\Response;
public function downloadFile()
{
    $fileContent = "This is the content of the file.";
    $fileName = 'example.txt';
    return Response::make($fileContent, 200, [
        'Content-Disposition' => 'attachment; filename=' . $fileName,
        'Content-Type' => 'text/plain',
    ]);
}

上記の例では、ファイルのコンテンツを動的に生成してダウンロードします。Response::make()メソッドを使用して、ファイルのコンテンツ、HTTPステータスコード、およびヘッダー情報を指定します。

これらはLaravelでファイルをブラウザから直接ダウンロードするための基本的な方法です。必要に応じて、ファイルのストリーミングや認証の組み込みなど、さまざまな拡張機能を利用することもできます。