Salta el contingut

Altres: Sistema de fitxers

Tractarem com accedir al sistema de fitxers i realitzar funcions bàsiques o necessàries sobre accions d'arxiu de text en un projecte

Com a base podeu accedir a la informació oficial o bé w3schools

Podem accedir tant a Sistema de Fitxers de Linux, com de Windows, la única diferència serà l’ús de les unitats i de la / o per separar directoris.

Tant podem realitzar accions sobre carpetes o fitxers, com trebalalr sobre el contingut intern d’un arxiu. Per exemple, escriure el contingut d’un fitxer de text .TXT

Les funcions són en natiu i no cal configurar res per usar-les

Com comprovar si un fitxer existeix

Usarem la funció file_exists()

Ens serveix per mirar si un fitxer o carpeta existeix, només cal passar-li la ruta i retorna TRUE o FALSE si existeix o no

$fitxer = “imatges/imatge1.jpg”;
if file_exists($fitxer)
    echo “El fitxer “ . $fitxer . “ existeix.”;
else
    echo “El fitxer “ . $fitxer . “ No existeix.”;

Com llegir línia a línia un fitxer de text

Seguirem la següent lògica:

- Mirar si el fitxer existeix
- Si existeix
    - l'obrim en mode lectura
    - Mentre tinguem linies anem lleguint
    - Tancar el fitxer
- Si no existeix, informem

Amb PHP:

//definim nom del fitxer
$ruta = dirname(__FILE__);
$NomFitxer = $ruta . "\\" . "fitxer.txt";

if (file_exists($NomFitxer))
{
    //obrim fitxer en mode lectura
    $fitxer = fopen($NomFitxer,"r") or exit("No puc obrir el fitxer");

    //llegim el seu contingut
    $text = fread($fitxer,filesize($NomFitxer));
    echo utf8_encode(str_replace("\r\n","<br>",$text));
    fclose($fitxer);
}
else
{
    echo "No es troba el fitxer";
}

Com escriure una línia de text en un fitxer

Seguirem la següent lògica:

- Mirar si el fitxer existeix
- Si existeix
    - l'obrim en mode afegir
    - escriure línia
- Si no existeix
    - l'obrim en mode crear
    - Escriure línia
- Tancar el fitxer

Observar els múltiples modes d'obertura d'un fitxer de text.

Amb PHP:

Amb PHP:

//definim nom del fitxer
$ruta = dirname(__FILE__);
$NomFitxer = $ruta . "\\" . "fitxer.txt";

if (file_exists($NomFitxer))
{
    //obrim fitxer en mode afegir
    $fitxer = fopen($NomFitxer,"a") or exit("No puc obrir el fitxer");

    //afegim una línia al final
    fwrite("Una línia de text" . PHP_EOL);

}
else
{
    //obrim fitxer en mode escriure
    $fitxer = fopen($NomFitxer,"w") or exit("No puc obrir el fitxer");

    //afegim una línia des de l'inici
    fwrite("Una línia de text" . PHP_EOL);
}
fclose($fitxer);

Com recorrer fitxers d’una carpeta

Usarem la funció scandir()

Ens serveix per obtenir els arxius i carpetes d’una ruta passada.

$ruta = "imatges/";
$arxius = scandir($ruta);
foreach($arxius as $arxiu)
    echo "<br>" . $arxiu;

Com pujar un fitxer

Per pujar un fitxer al servidor ens cal crear un formulari indicant que el tipus de INPUT és FILE, això ens permetrà cercar el fitxer a pujar.

El formulari a crear pot ser similar a:

<form action="upload.php" method="post" enctype="multipart/form-data">
    Selecciona una imatge per pujar:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <br>
    <input type="submit" value="Upload Image" name="submit">
</form>

El mètode ha de ser POST i cal marcar enctype=”multipart/form-data”

Més informació a PHP

Tot seguit l’arxiu upload.php pròpiament rep les dades de la imatge per POST i la desa al servidor

L’array global $_FILES és qui ens dona informació de l’arxiu o arxius pujats.

En el nostre cas, amb $_FILES["fileToUpload"] on “fileToUpload” és l’atribut “name” del camp del FORM, podem obtenir un array de propietats de la imatge pujada en format array.

Tot seguit podem fer un conjunt de validacions amb aquestes propietats per validar la pujada o no, per exemple l’extensió del fitxer pujat.

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" )
    echo "Només es permeten arxius JPG, JPEG, PNG i GIF!.<br>";

Podem moure el fitxer que s’ha pujat a una ubicació definitiva amb la funció move_upload_file()

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);

Aquesta funció retorna cert o fals si s’ha realitzat correctament l’acció.