Відкрийте можливості завантаження файлів у Laravel за допомогою Storage::download

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 21 грудня, 2024
Хочете дізнатися, як легко та безпечно організувати завантаження файлів у Laravel? У нашій статті ми розглянемо можливості методу Storage::download, що спростить ваше життя під час роботи з файлами

Метод 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 забезпечує безпечну та ефективну подачу файлів, при цьому абстракуючи деталі постачальника сховища