2010-11-19 20 views
0

Mon livre PHP donne un formulaire HTML de modèle pour télécharger un fichier:formulaire HTML pour le téléchargement de fichiers PHP: pas textbox

<form action="upload.php" method="post" enctype="multipart/form-data"/> 
    <div> 
     <input type="hidden" name="MAX_FILE_SIZE" value="10000000"/> 
     <label for="userfile">Upload a file:</label> 
     <input type="file" name="userfile" id="userfile"/> 
     <input type="submit" value="Send File"/> 
    </div> 
</form> 

Le livre affiche comme « Télécharger un fichier: » [zone de texte] [Parcourir .. .] [Envoyer le fichier]

Je l'ai copié mot à mot, et le résultat que je reçois est « Télécharger un fichier: » [Choisissez fichier] « aucun fichier choisi » [Envoyer le fichier]

Je me demande pourquoi la divergence existe. Y a-t-il un moyen de contourner cela? J'utilise XHTML Transitional. Aucun doctype n'est donné dans le livre. Mais je doute que ce soit le problème.

Le script que j'écris vise à prendre le fichier que l'utilisateur a choisi, à le traiter et à écrire le résultat dans un autre fichier qui n'existe pas encore. Je pose cette question car il serait utile de permettre à l'utilisateur de copier plus facilement le chemin/nom de fichier initial, de le coller dans l'autre champ et de simplement en changer une partie.

(Aussi: pourquoi la différence entre "Parcourir ..." et "Choisir un fichier"? J'ai essayé de définir manuellement la valeur du champ "fichier utilisateur" sur "Parcourir ..." mais rien ne s'est passé. mais je suis curieux néanmoins.)

Répondre

2

Il est probablement montré un navigateur et/ou une version différente.

On dirait que vous le regardez sous Safari et le livre a des captures d'écran d'IE, par exemple.

Il existe plusieurs façons d'obtenir un contrôle complet du téléchargement de fichiers et de l'élément <input type="file" />. Vous pouvez utiliser Flash, ou vous pouvez définir input sur opacity: 0, puis positionner ce que vous voulez en dessous.

+0

C'est exactement ça. Shoulda l'a testé dans d'autres navigateurs avant de poster ... merci beaucoup! – user460847

+0

@ user460847 Pas de soucis, ne hésitez pas à m'accepter :) – alex

+0

Haha quand j'ai d'abord répondu il m'a dit d'attendre ... voilà – user460847

0

Il y a quelque temps, les moteurs de navigateurs ont presque entièrement contrôlé les champs input = "file" - car ils sont aujourd'hui considérés comme un problème de sécurité. Par exemple les jours avant que vous pourriez facilement remplir l'entrée du fichier avec un chemin et un nom de fichier (par exemple quelque chose comme/etc/passwd) et masquer le champ, ainsi vous ne remarquerez pas que vous envoyez le fichier. .. C'est pourquoi, par exemple, vous ne pouvez pas prédéfinir le nom de fichier d'un tel champ et c'est pourquoi les navigateurs font maintenant tous leurs propres choses avec ces champs de saisie spéciaux. Comme Alex l'a dit plus haut, vous pouvez contourner cela, mais ce sera un peu compliqué, car cela signifierait "simuler" le champ de saisie du fichier.