РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
786 of 1392 menu

Метод download

Метод download класса Storage применяется для создания HTTP-ответа, который скачивает файл из файловой системы. Первым параметром передаётся путь к файлу, вторым необязательным - имя, под которым файл будет сохранён на компьютере пользователя, третьим - массив заголовков ответа. Если имя не указано, используется оригинальное имя файла.

Синтаксис

<?php use Illuminate\Support\Facades\Storage; Storage::download($path, $name, $headers); ?>

Пример

Давайте создадим простой маршрут, который скачивает файл из директории 'public':

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; Route::get('/download', function () { return Storage::download('public/report.pdf'); }); ?>

Результат выполнения кода:

"файл report.pdf скачан в браузере"

Пример

Скачаем файл и переименуем его при скачивании:

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; Route::get('/download-renamed', function () { return Storage::download('public/report.pdf', 'annual_report.pdf'); }); ?>

Результат выполнения кода:

"файл annual_report.pdf скачан в браузере"

Пример

Скачаем файл из локальной директории с указанием заголовков:

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; Route::get('/download-custom', function () { $headers = [ 'Content-Type' => 'application/pdf', 'Cache-Control' => 'no-cache, no-store, must-revalidate', ]; return Storage::download('public/manual.pdf', 'user_manual.pdf', $headers); }); ?>

Результат выполнения кода:

"файл user_manual.pdf скачан с кастомными заголовками"

Пример

Скачаем файл с другого диска, например, S3:

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; Route::get('/download-s3', function () { return Storage::disk('s3')->download('uploads/photo.jpg', 'profile_photo.jpg'); }); ?>

Результат выполнения кода:

"файл profile_photo.jpg скачан с S3 диска"

Пример

Скачаем файл и обработаем возможную ошибку, если файл не найден:

<?php use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Log; Route::get('/download-safe', function () { if (Storage::exists('public/missing.pdf')) { return Storage::download('public/missing.pdf'); } Log::error('File not found: public/missing.pdf'); return response()->json(['error' => 'File not found'], 404); }); ?>

Результат выполнения кода:

{"error":"File not found"}

Пример

Скачаем файл из контроллера, используя dependency injection:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class FileController extends Controller { public function download(Request $request) { $path = $request->input('file', 'default.pdf'); $name = $request->input('name', null); if (!Storage::exists($path)) { return response()->json(['error' => 'File not found'], 404); } return Storage::download($path, $name); } } ?>

Смотрите также

  • метод url,
    который возвращает публичный URL файла
  • метод exists,
    который проверяет существование файла
  • метод put,
    который сохраняет файл в файловую систему
  • метод delete,
    который удаляет файл из файловой системы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить