-
Notifications
You must be signed in to change notification settings - Fork 3
Note input file html5
Le tableau qui arrive à PHP a une structure différente en fonction
du name
de l'input (s'il est indiqué comme un tableau ou pas).
La propriété multiple
ne change pas le format du tableau reçu.
PHP récupère la racine de la valeur de l'attribut name envoyé, c'est à dire le conteneur du tableau.
- si
name="fichier"
, la racine serafichier
- si
name="fichiers[]"
, la racine serafichiers
- si
name="fichiers[images][bleues][]"
, la racine serafichiers
Il crée dedans un tableau décrivant les propriétés des fichiers :
$_FILES[ $racine] = array(
'name' => ,
'type' => ,
...
Et pour chaque propriété, il va stocker l'information désirée dans le tableau qui suit la racine calculée
- si
name="fichier"
,$_FILES['fichier']['name'] = 'nom du fichier.ext'
, - si
name="fichiers[]"
,$_FILES['fichiers']['name'][] = 'nom du fichier.ext'
, - si
name="fichiers[images][bleues][]"
,$_FILES['fichiers']['name']['images']['bleues'][] = 'nom du fichier.ext'
,
Si le name n'est pas un tableau, disons avec name='fichier'
,
et même si multiple
est présent, un seul fichier sera reçu (le dernier
de la sélection certainement), et on reçoit un $_FILES
du genre :
'fichier' => array(
'name' => 'xxx.png'
'type' => 'image/png'
'tmp_name' => 'tmp/nnn'
'error' => 0
'size' => 42603
)
Dès que le name est un tableau, disons avec name='fichiers[]'
,
et même si multiple
est absent, on reçoit un tableau pour chaque clé,
par exemple pour 1 fichier envoyé (avec ou sans multiple
) :
'fichiers' => array(
'name' => array(
0 => 'xxx.png'
),
'type' => array(
0 => 'image/png'
),
'tmp_name' => array(
0 => 'tmp/nnn',
),
'error' => array(
0 => 0
),
'size' => array(
0 => 42603
)
)
S'il y a plusieurs fichiers envoyés (avec multiple
présent), on reçoit donc
plusieurs entrées pour chaque clés :
'fichiers' => array(
'name' => array(
0 => 'xxx.png',
1 => 'autre.jpg',
2 => 'tetris.png'
),
...
)
Avec des sous tableaux, cela peut donner (avec name="fichiers[images][bleues][]"
)
'fichiers' => array(
'name' => array(
'images' => array(
'bleues' => array(
0 => 'xxx.png',
1 => 'autre.jpg',
2 => 'tetris.png'
),
),
),
...
)