Класс Storage
Класс Storage в Laravel является фасадом для работы с файловыми системами. Он предоставляет унифицированный API для выполнения операций с файлами и директориями, абстрагируя разработчика от конкретной реализации драйвера хранения. Класс поддерживает такие драйверы, как local, public, s3, ftp и другие, которые настраиваются в конфигурационном файле config/filesystems.php.
Основное преимущество использования Storage заключается в возможности переключения между различными хранилищами без изменения кода приложения. Для большинства методов первым параметром передаётся путь к файлу относительно корня диска, вторым - данные или опции.
Синтаксис
<?php
use Illuminate\Support\Facades\Storage;
// Получение экземпляра диска
Storage::disk($name);
// Основные операции с файлами
Storage::put($path, $contents);
Storage::get($path);
Storage::exists($path);
Storage::delete($path);
?>
Пример
Давайте запишем текст в файл example.txt в директории storage/app:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function store()
{
$res = Storage::put('example.txt', 'Hello, world!');
echo $res;
}
}
?>
Результат выполнения кода:
"true"
Метод put возвращает true при успешной записи и false в случае ошибки.
Пример
Давайте прочитаем содержимое файла example.txt:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function read()
{
if (Storage::exists('example.txt')) {
$res = Storage::get('example.txt');
echo $res;
} else {
echo 'File not found';
}
}
}
?>
Результат выполнения кода:
"Hello, world!"
Пример
Давайте проверим существование файла и удалим его:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function delete()
{
if (Storage::exists('example.txt')) {
$res = Storage::delete('example.txt');
echo $res;
} else {
echo 'File not found';
}
}
}
?>
Результат выполнения кода:
"true"
Метод delete возвращает true при успешном удалении и false в противном случае. Для удаления нескольких файлов можно передать массив путей.
Смотрите также
-
класс
Storage::put,
который записывает содержимое в файл -
класс
Storage::get,
который получает содержимое файла -
класс
Storage::delete,
который удаляет файл или директорию -
класс
Storage::disk,
который переключается на указанный диск