Методы фасада Storage
При использовании драйвера local
все файловые операции выполняются относительно директории root
, определенной в конфигурационном файле. Для диска local
директория root
— это storage/app
, для диска public
директория root
— это storage/app/public
.
// файл будет сохранен в storage/app/data/file.txt
Storage::disk('local')->put('data/file.txt', 'Some file content');
При вызове метода фасада Storage
без предварительного вызова метода disk()
— вызов будет автоматически передан диску по умолчанию.
// файл будет сохранен в storage/app/images/image.jpg
Storage::put('images/image.jpg', $contents); // содержимое файла
// файл будет сохранен в storage/app/images/image.jpg
Storage::put('images/image.jpg', $resource); // php-ресурс файла
// файл будет сохранен в storage/app/images/image.jpg
Storage::put('images/image.jpg', $resource); // php-ресурс файла
Метод putFile()
помещает содержимое указанного файла в виде экземпляра класса Illuminate\Http\File
или Illuminate\Http\UploadedFile
в указанный каталог, но с возложением контроля над всей потоковой обработкой и формированием уникального имени файла на Laravel. Метод возвращает путь к файлу, включая сформированное имя.
// автоматическое формирование уникального имени, файл будет сохранен как storage/app/images/L6ceLZQtmzvtR5lYEMqViu8BB8Fta8sWiD0xzXFw.jpeg
Storage::disk('local')->putFile('images', new File('/path/to/photo'));
// вручную указываем имя для, файл будет сохранен как storage/app/images/photo.jpg
Storage::disk('local')->putFileAs('images', new File('/path/to/photo'), 'photo.jpg');
Методом get()
можно получать содержимое файла. Он возвращает сырую строку содержимого файла.
$contents = Storage::get('images/image.jpg');
Методом exists()
можно определить существование файла на диске:
$exists = Storage::exists('image.jpg');
Метод url()
позволяет получить URL файла. При использовании диска local
будет возвращён URL вида /storage/images/image.jpg
. При использовании диска public
будет возвращён полный URL, домен сайта будет получен из .env
-файла в корне проекта, это настройка APP_URL
.
// возвращает URL /storage/images/image.jpg
$url = Storage::disk('local')->url('images/image.jpg');
// возвращает URL http://server.com/images/image.jpg
$url = Storage::disk('public')->url('images/image.jpg');
Метод size()
позволяет получить размер файла в байтах:
$size = Storage::size('images/image.jpg');
Метод copy()
копирует файл, метод move()
перемещает файл:
Storage::copy('images/old-image.jpg', 'images/new-image.jpg');
Storage::move('images/old-image.jpg', 'images/new-image.jpg');
Метод prepend()
добавляет содержимое в начало файла, метод append()
добавляет содержимое в конец файла:
Storage::prepend('logs/some.log', 'Some log text');
Storage::append('logs/some.log', 'Some log text');
Метод delete()
удаляет указанный файл:
Storage::delete('images/image.jpg');
Метод files()
возвращает массив имен файлов в указанной директории. А метод allFiles()
— массив имен файлов в указанной директории и во всех поддиректориях.
Метод directories()
возвращает массив имен директорий в указанной директории. А метод allDirectories()
— массив имен директорий в указанной директории и во всех поддиректориях.
Метод makeDirectory()
создает новую директорию, а метод deleteDirectory()
удаляет указанную директорию.