Récuperer la valeur d'un input file[ajax]

Fermé
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 - 2 août 2008 à 15:06
 Wajih - 6 avril 2013 à 04:42
Bonjour a tous , j'ai déjà posé la question sur un ancien sujet , je pensais avoir trouvé la réponse mais finalement
toujours pas ....

alors voici mon problème j'ai un formulaire avec un input file (jusqu'ici rien de bien compliqué)

<form action="???" method="post" enctype="multipart/form-data">
<input type="file" name="Filedata" size="20"></input>
</form>

je voudrai pouvoir récupérer la valeur de Filedata et la tester dans un fichier php puis afficher en ajax le retour de ma fonction php exemple : erreur , nom et taille de l'image si tout est ok ....etc ....

je ne vois pas comment faire ..
en effet si je lance sur le submit le script dans action (il m'ouvre une nouvelle fenêtre avec les valeurs recuperer..)
mais je ne veu pas changer de page , je voudrai rester sur la meme pour continuer de remplir le formulaire

j'ai donc pensé a un bouton a coté du parcourir sur lequel je lance une fonction js :

<input type="file" name="Filedata" size="20"></input><input type="button" value="charger image" onclick="???";/>

et dans ce cas la je ne sais comment recuperer les valeurs de mon champ

tout ceci n'est pas tres claire mais si vous avez des indices je suis preneur
A voir également:

6 réponses

Bonjour !

Je suis peut être en retard mais j'ai cherché longtemps à envoyer des données de type data en asynchrone en AJAX. Il existe des moyens très compliqués de le faire (envoyer purement et simplement ces données et les retranscrire à l'arrivée...).

Il y a un petit "truc" qui peut peut-être aider à avancer certains : ce n'est pas très propre ni très valide mais ça marche.

Le problème est que de base, nous savons envoyer des données autres que caractères à une page php (sans AJAX). Si on le fait tel quel, la page se recharge et ce n'est donc plus asynchrone. Le principe est donc de déporter ce chargement dans une zone invisible : une iframe.

Placez une iframe avec un style="display:none;" et un name="mon_nom_iframe" quelque part dans votre page. Elle va être le "réceptacle" de votre formulaire.

Pour dire à votre formulaire qu'il doit se charger dans l'iframe et non dans la frame courante, utilisez target :

<form target="mon_nom_iframe" action="..." enctype="multipart/form-data">
....
</form>


Pour récupérer des valeurs dans l'iframe, un peu de onload et de javascript feront passer ça pour de l'asynchrone.




Ca fonctionne, ça aide, mais ce n'est pas le plus propre, je l'avais dit ^^.
5
marchaiseng Messages postés 154 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 13 août 2013 7
2 août 2008 à 15:08
Jspr répondre à ton problème.

<?php echo $_POST['Filedata']; ?>
0
leod Messages postés 98 Date d'inscription samedi 12 janvier 2008 Statut Membre Dernière intervention 30 janvier 2009 2
2 août 2008 à 15:21
merci pour ta réponse mais mon probleme n'est pas du tout a ce niveau la

je me suis mal exprimé sans doute ...

disons que si je lance un fichier de traitement sur le action ou sur un onclick (ex: script.php)

le fichier script.php ne peu recuperer la valeur $_POST['Filedata'];

enfin ou du moins je n'y arrive pas et je cherche une alternative !

car mon script.php serai en charge de tester le fichier taille etc ... et renvera une reponse a afficher de facon asynchrone dans le formulaire
0
marchaiseng Messages postés 154 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 13 août 2013 7
4 août 2008 à 22:11
Je ne suis plus assez qualifié pour le dire...lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
je pense qu'un input de type file se recupere par la variable globale $_FILE mains non pas avec $POST, et ne pas oublier l'attribut "enctype" dans la balise <form>
0
Avez-vous trouvé la réponse?
0
J'ai un prbléme de récupération de valeur d'une iframe,

quelqu'un a t-il script ou un cours qui éclercie la solution à mon probléme?

Merci d'avance
0