PHPPamokos.lt


12. Flysystem - darbui su failais

Jei jums tenka dirbti su failų saugojimu, pvz su nuotraukų galerijomis, tai Laravel 5 turi labai gerą integraciją su biblioteka Flysystem, kuri leidžia su failais dirbti, rašant minimaliai kodo.

Ir dar didesnis jos privalumas - kad galima naudojant tas pačias funkcijas, nesunkiai persijungti nuo lokalaus failų saugojimų prie "cloud" sprendimų - tokių kaip Amazon S3 ar Rackspace - realiai visas kodas liktų tas pats, tereiktų pakeisti nustatymuose su kuria failų sistema dirbame.

Tai nustatymams yra skirtas failas config/filesystems.php:

return [
	'default' => 'local',
	'cloud' => 's3',

	'disks' => [
		'local' => [
			'driver' => 'local',
			'root'   => storage_path().'/app',
		],
		's3' => [
			'driver' => 's3',
			'key'    => 'your-key',
			'secret' => 'your-secret',
			'region' => 'your-region',
			'bucket' => 'your-bucket',
		],
		'rackspace' => [
			'driver'    => 'rackspace',
			'username'  => 'your-username',
			'key'       => 'your-key',
			'container' => 'your-container',
			'endpoint'  => 'https://identity.api.rackspacecloud.com/v2.0/',
			'region'    => 'IAD',
		],
	],
];

Turbūt komentarų daug nereikia. Naudojate savo lokalią failų sistemą, kur failus saugosite kataloge storage/app (bet galite tą pakeisti su parametru 'root') ir viskas. O jei norite naudoti cloudą - įrašote savo prisijungimo duomenis ir pakeičiate pagrindinę talpyklą nustatymuose.

Dabar - kaip vyksta pats darbas su failais? Yra didelis kiekis funkcijų, tas parodysiu tik svarbiausias, kad tiesiog suprastumėte, kaip viskas paprasta. Sakykime, norite sužinoti, ar failas egzistuoja?

if (Storage::exists('file.txt'))
{
    // failas egzistuoja
}

Pastaba. Tiesa, nepamirškite failo pradžioje pridėti use Storage;

Ir analogiškai kitos funkcijos:

$contents = Storage::get('file.txt'); Gauti failo turinį
Storage::put('file.txt', $contents); Įdėti turinį į failą
Storage::append('file.log', 'Appended Text'); Pridėti turinį į failo galą
Storage::delete('file.jpg');
Storage::delete(['file1.jpg', 'file2.jpg']);
Ištrinti failą ar failų eilę
Storage::copy('old/file1.jpg', 'new/file1.jpg'); Nukopijuoti failą į kitą katalogą
$size = Storage::size('file1.jpg'); Gauti failo dydį
$time = Storage::lastModified('file1.jpg'); Kada failas buvo paskutinį kartą modifikuotas
$files = Storage::files($directory);
$files = Storage::allFiles($directory);
Gauti failus iš katalogo - vieno lygio arba visų lygių
$directories = Storage::directories($directory);
$directories = Storage::allDirectories($directory);
Gauti katalogus - vieno lygio arba visų lygių
Storage::makeDirectory($directory); Sukurti katalogą
Storage::deleteDirectory($directory); Ištrinti katalogą


(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com