11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Oui les iframe c'est contesté cependant mon but étant de récupérer la valeur du $_FILES["nom_du_fichier"]["tmp_name"] en javascript pour le traiter en asynchrone or firefox ne le permet pas.
Donc ruse de sioux :

<form method="post" action="formUploader.php" target="myframe" enctype="multipart/form-data">   
	<input type="file" name="nom_du_fichier" >  
	<input type="submit" value="ok"/>
</form>
<IFRAME  NAME="myframe" WIDTH="200" HEIGHT="100" ALIGN="middle">
	<input type="hidden" name="tmp_name" id="tmp_name" value="<?phpecho $_FILES["nom_du_fichier"]["tmp_name"] ?>"/>

</IFRAME>
<INPUT TYPE="button" VALUE="click" onClick="affiche()">



function affiche()
{
    alert(document.all.myframe.innerHTML);
    alert(document.all.myframe.getElementById("tmp_name"));
}


Voila l'idée ...
PROBLEME :
1.
document.all.myframe.innerHTML 
ne me renvoie pas vraiment le contenu de l'iframe mais renvoie le contenu de l'iframe sans changement donc la value de tmp_name=null pourtant si j'affiche le code source du cadre avec firefox j'ai bien la bonne value au bon endroit.
2.
alert(document.all.myframe.getElementById("tmp_name"));
----> Erreur : document.all.myframe.getElementById is not a function


Please help !
Modifié par Su4p (17 Nov 2010 - 17:53)
Trouvé !

Pour ce qui cherche encore : 2 fichiers (1 fichier d'affichage et un de traitement)

le fichier d'affichage :

<form action="traitement.php" method="post" enctype="multipart/form-data" target="upload_target"  >
        <p id="f1_upload_process" style="visibility:hidden">Loading...<br/><img src="Materiel/loader.gif" /></p>
        <p id="f1_upload_form" align="center">
		
        <label> 
            <input name="nom_du_fichier" type="file"/>
        </label>
		<br /><br />
        <label>
            <input type="submit" name="submitBtn" value="Upload" />
        </label>
		<br />
		<label>Format accepté (png, gif, jpg, jpeg)<br /> Taille inférieur à 50ko<br /></label>
        </p>
		<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
                  
    </form>

le fichier de traitement :

<?php 
print_r($_FILES);
if(isset($_FILES['nom_du_fichier']))
{ 
     $dossier = 'upload/';
     $fichier = basename($_FILES['nom_du_fichier']['name']);
     if(move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
     {
          echo 'Upload effectué avec succès !';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo 'Echec de l\'upload !';
     }
}

?>
 


PS :
1. vous ne verrez pas le résultat du print_r ou si l'upload a bien été effectué sans une application de type "httpFox" sur firefox (puisque cela se fait en asynchrone)
2. window.top.window.uploadReussi() pour appeler une fonction js du fichier d'affichage sur le fichier de traitement
Modifié par Su4p (17 Nov 2010 - 17:07)