Situatie
Laravel oferă o abstractizare puternică a sistemului de fișiere datorită minunatului pachet PHP Flysystem de Frank de Jonge. Integrarea Laravel Flysystem oferă drivere simple pentru lucrul cu sistemele de fișiere locale, SFTP și Amazon S3. Și mai bine, este uimitor de simplu să comutați între aceste opțiuni de stocare între mașina dvs. de dezvoltare locală și serverul de producție, deoarece API-ul rămâne același pentru fiecare sistem.
Solutie
Când utilizați driverul local, toate operațiunile cu fișierele sunt legate de directorul rădăcină definit în fișierul de configurare a sistemului de fișiere. În mod implicit, această valoare este setată la directorul de stocare/aplicație. Prin urmare, următoarea metodă ar scrie în storage/app/example.txt:
use Illuminate\Support\Facades\Storage; Storage::disk(‘local’)->put(‘example.txt’, ‘Contents’); |
Discul public inclus în fișierul de configurare a sistemelor de fișiere al aplicației dvs. este destinat fișierelor care vor fi accesibile public. În mod implicit, discul public folosește driverul local și își stochează fișierele în stocare/aplicație/public.
Pentru a face aceste fișiere accesibile de pe web, ar trebui să creați un link simbolic de la public/stocare la stocare/aplicație/public. Utilizarea acestei convenții de folder vă va păstra fișierele accesibile public într-un singur director care poate fi partajat cu ușurință între implementări atunci când utilizați sisteme de implementare fără timp de nefuncționare, cum ar fi Envoyer.
Pentru a crea legătura simbolică, puteți utiliza comanda storage:link Artisan:
php artisan storage:link |
Odată ce un fișier a fost stocat și linkul simbolic a fost creat, puteți crea o adresă URL la fișiere folosind ajutorul de ajutor pentru active:
echo asset(‘storage/file.txt’); |
Puteți configura legături simbolice suplimentare în fișierul de configurare a sistemului de fișiere. Fiecare dintre legăturile configurate va fi creată atunci când rulați comanda storage:link:
‘links’ => [ public_path(‘storage’) => storage_path(‘app/public’), public_path(‘images’) => storage_path(‘app/images’), ], |
Leave A Comment?