7. Pujada de fitxers
Taula de continguts
Introducció
Per a pujar fitxers PHP implementa un mecanisme senzill a través de la variable superglobal $_FILES
.
En Pujada d’arxius disposeu de tota la informació necessària per a gestionar la pujada d’arxius.
Formulari
Per poder utilitzar el tipus file
en l’element input
cal que el formulari incloga l’atribut enctype
amb el valor multipart/form-data
.
El valor de l’atribut name
de l’element input
serà l’índex de l’array associatiu $_FILES
que ens permetrà obtenir tota la informació del procés de pujada del fitxer.
En el següent exemple:
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="10240">
<input type="file" name="image" />
<input type="submit" value="Upload" />
</form>
Emprarem $_FILES['image']
per obtenir les dades de l’arxiu penjat.
Variable superglobal $_FILES
Cada element en $_FILES
és un array que aporta informació sobre el fitxer pujat. Les claus més importants són:
name
. El nom original del fitxer pujat. No és massa útil perquè el sistema original pot tindre convencions diferents i pot generar col·lisions si l’utilitzem per a emmagatzemar-lo en la seua ubicació definitiva.type
. El tipus MIME del fitxer deduït pel navegador.size
. La grandària en bytes del fitxer. Si el fitxer és massa gran el valor enviat serà 0.tmp_name
. El nom temporal del fitxer en el servidor on s’ha emmagatzemat el fitxer pujat.
Moure el fitxer
Com que el fitxer pujat es guarda en una carpeta temporal hem d’emprar la funció move_uploaded_file
per a guardar-lo en la ubicació definitiva.
La funció is_uploaded_file
ens permet a assegurar-nos que el fitxer ha estat pujat usant HTTP POST i no es tracta d’un fitxer maliciós.
move_uploaded_file
ja fa eixa comprovació en executar-se.
Gestió d’errors
PHP torna un codi d’error en $_FILES
. El codi es pot trabar en la clau error
. Per exemple: $_FILES['image']['error']
.
Els missates d’error més importants són:
UPLOAD_ERR_OK
: La pujada ha sigut correcta.UPLOAD_ERR_INI_SIZE
: La grandària del fitxer que s’intenta pujar és major que el valor indicat en la directivaupload_max_filesize
.UPLOAD_ERR_FORM_SIZE
: La grandària del fitxer que s’intenta pujar és major que el valor indicat en el formulari enmax_file_size
.UPLOAD_ERR_NO_FILE
: No s’ha enviat cap fitxer.
En Explicació dels missatges d’error teniu més informació.