Файловая система: Файлы
Все пути в примерах ниже относительны к корню выбранного диска. Для локальной работы с файловой системой сервера используйте фасад File или помощник files().
Проверка типа и наличия
Метод exists проверяет существование записи, missing — её отсутствие. Для различения файла и каталога применяйте isFile, isDirectory или type (file, dir либо false).
use Imhotep\Facades\Storage;
$disk = Storage::disk('uploads');
if ($disk->exists('invoices/july.pdf') && $disk->isFile('invoices/july.pdf')) {
// ...
}
if ($disk->missing('invoices/august.pdf')) {
// ...
}
if ($disk->type('invoices/august.pdf') === 'file') {
// ...
}
Чтение и запись
Метод get возвращает строку либо false. При несуществующем файле может выбросить FileNotFoundException, если включён throw в конфигурации диска.
Метод put принимает строку и возвращает число записанных байтов либо false.
$disk = Storage::disk('uploads');
$disk->put('notes/today.txt', "Первая строка\n");
$contents = $disk->get('notes/today.txt');
$stream = fopen('/tmp/source.csv', 'rb');
$written = $disk->put('exports/report.csv', $stream);
fclose($stream);
Не создавайте родительский каталог неявно, предварительно вызовите makeDirectory('exports').
Загрузка готового файла
Методы putFile и putFileAs принимают путь, Imhotep\Support\File или Imhotep\Http\UploadedFile. Первый метод использует хеш файла как новое имя.
use Imhotep\Facades\Storage;
use Imhotep\Support\File;
$disk = Storage::disk('uploads');
$path = $disk->putFile('photos', new File('/tmp/photo.jpg'));
$path = $disk->putFileAs('photos', '/tmp/photo.jpg', 'profile.jpg');
Копирование, перемещение и удаление
$disk = Storage::disk('uploads');
$disk->copy('drafts/invoice.pdf', 'archive/invoice.pdf');
$disk->move('drafts/invoice.pdf', 'processed/invoice.pdf');
$disk->delete('processed/invoice.pdf');
$disk->delete(['archive/one.pdf', 'archive/two.pdf']);
Метаданные и части пути
$disk = Storage::disk('uploads');
$size = $disk->size('photos/profile.jpg'); // размер в байтах
$changedAt = $disk->lastModified('photos/profile.jpg'); // UNIX timestamp
$mime = $disk->mimeType('photos/profile.jpg');
$absolutePath = $disk->path('photos/profile.jpg');
$name = $disk->name('photos/profile.jpg'); // profile
$basename = $disk->basename('photos/profile.jpg'); // profile.jpg
$extension = $disk->extension('photos/profile.jpg'); // jpg
$directory = $disk->dirname('photos/profile.jpg'); // photos
Путь к файлу выстраивается относительно корневой категории. Методы size, lastModified и mimeType возвращают false, когда драйвер не смог получить значение.
Хэши
Метод hash возвращает хэш файла, по умолчанию MD5.
Метод hasSameHash сравнивает хэши двух файлов.
$hash = Storage::disk('uploads')->hash('photos/profile.jpg', 'sha256');
$same = Storage::disk('uploads')->hasSameHash('a.txt', 'copies/a.txt');