Afişare fişier dacă există pe server

În cazul în care suntem nevoiţi să redăm o listă de fişiere, astfel încât să le putem accesa prin intermediul linkului, este recomandabil să fie afişate linkurile respective, doar dacă fişierele există.

Varianta universală

Astfel, în primă fază definim calea spre fişierele respective. Să presupunem, de exemplu, că ar fi vorba de un folder cu nişte pdf-uri. Deoarece este nevoie să ajungem la calea de pe HDD, nu URL-ul, vom folosi variabila $_SERVER[‘DOCUMENT_ROOT’].

După cum se poate observa, linkul propriu-zis nu are nevoie de variabila $_SERVER[‘DOCUMENT_ROOT’].
Rezultatul acestei funcții este stocat în memoria cache, de aceea pentru a o goli este recomandabillă utilizarea funcţiei clearstatcache().
O funcţie care să dea posibilitatea mai sigură de identificare a existenţei unui fişier poate fi cea de la acest link.

Şi totuşi…

Dacă am menţionat mai sus că cea mai la îndemână metodă este folosind funcţia file_exists(), doar că este necesară o nuanţare: dacă calea fişierului este un link simbolic către un fișier care nu există, file_exists() va returna true, deoarece linkul în sine există. Pentru a creşte precizia rezultatului, pot fi folosite funcţii precum:

  • is_readable() și is_writable() pentru a verifica dacă scriptul PHP are permisiunile necesare pentru a accesa fișierul.
  • is_file() pentru a verifica dacă un nume de cale specifică un fișier regulat, nu un director sau un link simbolic.
  • filetype() pentru a determina dacă un fișier este un fișier regulat, un director, un link simbolic etc.

De asemenea, s-ar putea să fie necesară curăţarea cache-ului sistemului de fișiere pentru a obține rezultate precise. Un alt aspect ar putea să presupună verificarea căii complete; trebuie să ne asigurăm că acea cale către fișier este absolută și corectă. Desigur, funcţia error_reporting() poate afișa toate erorile și avertizările, ceea ce poate ajuta la identificarea problemelor.

Un exemplu, folosind funcţiile is_file() şi is_readable():

Sursa: shorturl.at/mwFW7, w3Schools.com

Author: Ovidiu.S

Suficient de pasionat de această zonă profesională ca, în cazul în care ştiu ceva - cât de puţin - să împărtăşesc cu alţii.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *