Файловая система: Файлы

Все пути в примерах ниже относительны к корню выбранного диска. Для локальной работы с файловой системой сервера используйте фасад 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') {
    // ...
}
PHP

Чтение и запись

Метод 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);
PHP

Не создавайте родительский каталог неявно, предварительно вызовите 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');
PHP

Копирование, перемещение и удаление

$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']);
PHP

Метаданные и части пути

$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
PHP

Путь к файлу выстраивается относительно корневой категории. Методы 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');
PHP