<input type="file" > => comment récupérer

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : <input type="file" > => comment récupérer

par thehawk » 16 avr. 2007, 10:25

franchement javoue jolie deterrage de sujet ^^

par Invité » 16 avr. 2007, 10:19

Mais alors, je ne peux pas 'ruser' pour donner l'impression que ça fonctionne comme je le souhaite, cest-à-dire afficher le nom du fichier après la validation du formulaire même si ce n'est pas dans un input ? => faire juste un echo ?
Si, c'est possible. Tu peux afficher le nom du fichier uploadé mais pas son chemin complet issu du disque dur du visiteur.
Et pour le répertoire source, je vais être obligée de l'imposer pour le cas où l'utilisateur choisisse l'option 'tous les fichiers du même répertoire' ?
Impossible à faire avec un "simple" formulaire HTML.
Tu ne peux récupérer par le biais du HTML+PHP que les fichiers qui ont été sélectionné un par un par l'utilisateur via des champs de type input file. Il est impossible via ces même balises input file d'uploader le contenu de tout un répertoire.

Pour faire ça il faut avoir recours à une applet java.
Quelques pistes (que je n'ai pas testé):
http://jupload.sourceforge.net/
http://www.javazoom.net/applets/jclient ... ad_fr.html
http://www.unlimitedftp.ca/products/uupload/

par pjl » 26 déc. 2005, 14:06

Je rapelle quand même qu'il existe déjà tout un tutau sur l'upload : http://www.phpfrance.com/tutoriaux/inde ... e-fichiers

par Invité » 26 déc. 2005, 11:45

oui effectivement, c'est la raison pour laquelle j'ai pensé que je n'y accèderai pas car sinon c'est comme si je fournissais des fonctionnalités ftp sans avoir de mot de passe pour la connexion ;-(

soit je repense mon histoire, genre transfert fichier par fichier avec le <input type=file> soit avec les applet java...

merci pour tous ces info...

par zeus » 26 déc. 2005, 11:35

la syntaxe "C:\dir\" est très liée à un environnement Win32 (windows) et si ton serveur distant est un serveur Linux => ça plante

De plus, si ton script est sur ton serveur distant et que tu veux acceder à ton poste local, c'est pas avec C:\ que tu vas y arriver vu que c'est ta vue locale

A mon avis, ce que tu cherches à faire est impossible. Toujours pour des raisons de sécurité.
Tu imagines ? je crée un programme qui copie c:\ de tous les pc qui se connectent sur mon site ?

par karpediem » 26 déc. 2005, 05:56

est-ce que si je choisit d'imposer mon répertoire local, par exemple c:/fichier/ et que je veux copier la totalité du contenu vers un répertoire du serveur, sans passer cette fois-ci par les <input type="file"> est-ce que ça peut marcher ? j'ai déjà fait de serveur à serveur, mais là, je ne suis pas sure que php arrive à lire mon répertoire en local car mon test is_dir('c:/fichier/') me renvoie false ;-(( est-ce normal docteur ?

par iclo » 24 déc. 2005, 12:02

La raison de ces limitations, c'est la sécurité, sans quoi le vol de fichier à l'insu de l'internaute serait un jeu d'enfant.

par @rthur » 24 déc. 2005, 11:58

Mais alors, je ne peux pas 'ruser' pour donner l'impression que ça fonctionne comme je le souhaite, cest-à-dire afficher le nom du fichier après la validation du formulaire même si ce n'est pas dans un input ? => faire juste un echo ?
Si, c'est possible. Tu peux afficher le nom du fichier uploadé mais pas son chemin complet issu du disque dur du visiteur.
Et pour le répertoire source, je vais être obligée de l'imposer pour le cas où l'utilisateur choisisse l'option 'tous les fichiers du même répertoire' ?
Impossible à faire avec un "simple" formulaire HTML.
Tu ne peux récupérer par le biais du HTML+PHP que les fichiers qui ont été sélectionné un par un par l'utilisateur via des champs de type input file. Il est impossible via ces même balises input file d'uploader le contenu de tout un répertoire.

Pour faire ça il faut avoir recours à une applet java.
Quelques pistes (que je n'ai pas testé):
http://jupload.sourceforge.net/
http://www.javazoom.net/applets/jclient ... ad_fr.html
http://www.unlimitedftp.ca/products/uupload/

par karpediem » 24 déc. 2005, 04:36

ok, j'ai compris... je suis un peu fatiguée, mais en relisant tes réponse j'ai compris comment il se débrouille... Mais alors, je ne peux pas 'ruser' pour donner l'impression que ça fonctionne comme je le souhaite, cest-à-dire afficher le nom du fichier après la validation du formulaire même si ce n'est pas dans un input ? => faire juste un echo ? Et pour le répertoire source, je vais être obligée de l'imposer pour le cas où l'utilisateur choisisse l'option 'tous les fichiers du même répertoire' ?
Tu vois autre chose ?

par karpediem » 24 déc. 2005, 04:30

move_uploaded_file() s'assure que le fichier filename est un fichier téléchargé par HTTP POST => le fait d'avoir sélectionné un fichier par le input de type file, a pour effet de télécharger le fichier ? J'ai tjrs la même question : comment fait le programme pour savoir où aller chercher le fichier à copier ?

par @rthur » 24 déc. 2005, 04:04

alors si je fais une copier de $_FILES['fichier']['name'] vers un emplacement de mon serveur, ça va marcher ?
Il existe une fonction toute faite ;)
http://fr.php.net/move_uploaded_file

par karpediem » 24 déc. 2005, 03:44

alors si je fais une copier de $_FILES['fichier']['name'] vers un emplacement de mon serveur, ça va marcher ?

par @rthur » 24 déc. 2005, 03:27

Mais non c'est pas si terrifiant que ça ;)

Pour faire simple, je vais tenter de résumer l'utilité de ce champ:

Le champ <input type="file" /> permet a un utilisateur de sélectionner un fichier sur son disque dur local.
Quand il envoie le formulaire, le fichier sélectionné est uploadé sur le serveur distant.
Le script PHP reçoit donc (via la variable $_FILES) le fichier et quelques infos en plus comme son nom, le type renvoyé par le navigateur, etc...

Le chemin complet du fichier sur le disque dur de l'utilisateur ne peut pas être connu par le script PHP.
De plus, seul l'utilisateur peut sélectionner un fichier sur son disque dur (le concepteur de la page ne peut pas pré-remplir ou modifier ce champ)

par karpediem » 24 déc. 2005, 03:18

C'est tarrifiant ce que tu me dis...

Comment puis-je faire alors pour choisir 1 fichier sur mon disque local et l'envoyer sur mon serveur ?

par @rthur » 24 déc. 2005, 03:06

Bonsoir,

Ce que tu cherches à faire est impossible car c'est le fichier qui est envoyé au serveur et non son emplacement sur le disque dur du visiteur.
De plus, pour des raisons de sécurité, il n'est pas possible d'affecter de façon automatique (ni par défaut avec le paramètre value="...") le contenu d'un champ de type input file.