Метод Storage::download у Laravel спрощує безпечну подачу файлів, пропонуючи зрозумілий API для завантаження та управління файловим сховищем.
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function download($filename)
{
return Storage::download(
"documents/{$filename}",
"custom-{$filename}",
['Content-Type' => 'application/pdf']
);
}
}
Ось приклад використання Storage::download()
у контролері:
<?php
namespace App\Http\Controllers;
use App\Models\Document;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class DocumentController extends Controller
{
public function download(Request $request, Document $document)
{
if (!$request->user()->canDownload($document)) {
abort(403);
}
if (!Storage::exists($document->path)) {
abort(404, 'Файл не знайдено');
}
$document->increment('download_count');
return Storage::download(
$document->path,
$document->original_name,
[
'Content-Type' => $document->mime_type,
'Content-Disposition' => 'attachment',
'Cache-Control' => 'no-cache, must-revalidate'
]
);
}
}
Отже, метод Storage::download забезпечує безпечну та ефективну подачу файлів, при цьому абстракуючи деталі постачальника сховища