On ne peut pas modifier grand-chose sur le input[type=file]
le contrôle lui-même.
Puisque le fait de cliquer sur un label
correctement apparié avec une entrée l'activera/focusera, nous pouvons utiliser un élément label
pour déclencher la boîte de dialogue de navigation du système d'exploitation.
Voici comment vous pouvez le faire
label {
cursor: pointer;
/* Style as you please, it will become the visible UI component. */
}
#upload-photo {
opacity: 0;
position: absolute;
z-index: -1;
}
<label for="upload-photo">Browse...</label>
<input type="file" name="photo" id="upload-photo" />
La feuille de style en cascade (CSS) du contrôle de formulaire le rendra invisible et ne prendra pas de place dans la mise en page du document, mais il sera tout de même existe afin qu'elle puisse être activée par l'intermédiaire du label
.
Si vous voulez afficher le chemin choisi par l'utilisateur après la sélection, vous pouvez écouter la commande change
avec JavaScript et ensuite lire le chemin que le navigateur met à votre disposition (pour des raisons de sécurité, il peut mentir pour vous indiquer le chemin exact). Une façon de rendre la chose plus agréable pour l'utilisateur final est d'utiliser simplement le nom de base du chemin d'accès qui est renvoyé (de sorte que l'utilisateur voit simplement le nom de fichier choisi).
Il existe un grand guide par Tympanus pour avoir coiffé ça.
0 votes
La raison pour laquelle le champ de texte est présent est qu'il montre à l'utilisateur le chemin d'accès au fichier après qu'il l'ait parcouru et sélectionné.
0 votes
Oooppss... il semble que ce soit la façon dont Firefox le gère...
0 votes
Pour que les choses soient claires, même après avoir recherché le fichier, ils doivent encore soumettre le formulaire à l'aide d'un bouton d'envoi.