Bonjour à tous,
Jusque là, j'ai réussi à créer un formulaire qui permet de joindre un fichier (mais pas obligatoire).
Je reçois parfaitement mes mails avec le fichier si il y en a eu un d'ajouté.
Le soucis, c'est que j'aimerais pouvoir joindre plusieurs fichiers!
Pour cela, j'ai trouvé le moyen d'ajouter les champs côté formulaire.
Voici mon côté formulaire:
Code :
- <head>
- <script language="JavaScript">//Pour joindre des fichiers au mail
- function addFile(el)
- {
- d = document.getElementById("attDiv" );
- iDiv = document.createElement("div" );
- newAttach = document.createElement("input" );
- newAttach.setAttribute("type","file" );
- newAttach.setAttribute("name","fichier[]" ); //notez les []
- iDiv.appendChild(newAttach);
- remLink = document.createElement("a" );
- remLink.appendChild(document.createTextNode("Supprimer" ));
- remLink.setAttribute("href","javascript:void(0)" );
- remLink.setAttribute("onclick","remAttachment()" );
- remLink.setAttribute("class","form1" );
- //ci dessous on est OBLIGE de mettre la fonction comme ça pour
- // des raisons de compatibilité IE...
- remLink.onclick=function(e){
- e=e||window.event;
- //taget = Ff et srcElement = IE
- var theTarget = e.target || e.srcElement;
- child = theTarget.parentNode;
- d = document.getElementById("attDiv" );
- d.removeChild(child);
- };
-
- iDiv.appendChild(remLink);
- d.insertBefore(iDiv,d.childNodes[0]);
- }
- </script>
- </head>
- <body><!-- fonction dans body pour les masques de saisies -->
- <form id="SignupForm" action="formulaire_verif.php" name="declaration" method="post" enctype="multipart/form-data">
- <fieldset>
- <legend>Documents </legend>
- <p><input id="profession" name="profession" type="text" /></p>
- <div id='attDiv'> <input type="file" name="fichier[]"><br />
- <a href="javascript:void(0)" onClick="addFile(this)" class="form1">Ajouter un fichier supplémentaire</a> </div>
- </fieldset>
- <p><input id="SaveAccount" name="upload" type="submit" value="Envoyer" /></p>
- </form>
- </body>
|
Et mon code côté traitement:
Code :
- <?
- if (isset($_FILES['fichier']))
- {
- //$_FILES existe
- foreach ($_FILES['fichier']['name'] as $key => $value) {
- $name_file=$value;//nom reel de l'image
- $tmp_file=$_FILES['fichier']['tmp_name'][$key];//nom temporaire de l'image (sur le serveur)
-
-
- if( is_uploaded_file($tmp_file) )// si formulaire soumis
- {
- echo $name_file;
- //=====Lecture et mise en forme de la pièce jointe
- $fichiers = fopen($tmp_file, "r" );
- $attachement = fread($fichiers, filesize($tmp_file));
- $attachement = chunk_split(base64_encode($attachement));
- fclose($fichiers);
- //==========
- $type = "Content-Type: multipart/mixed ;\n";
- $type2 = "Content-Type: text/html; charset=\"ISO-8859-1\"\n ";
- $type2.= "Content-Transfer-Encoding: 8bit\n";
- $ajoutpiece= "Content-Type: application/pdf;\n name=$name_file;\n";
- $ajoutpiece.= "Content-Transfer-Encoding: base64\n";
- $ajoutpiece.= "Content-Disposition: attachment;\n filename=$name_file;\n";
- $ajoutpiece.= "\n".$attachement."\n\n";
- $ajoutpiece.= "\n--".$boundary."--\n";
- }
- }
- }
- else
- {
- $type = "Content-Type: text/html; charset=\"ISO-8859-1\"\n ";
- $type.= "Content-Transfer-Encoding: 8bit\n";
- }
- //=====Création de la boundary
- $boundary = "-----=".md5(rand());
- $boundary_alt = "-----=".md5(rand());
- //==========
- $adresse="mmm@mmm.com";
- $sujet = "Sujet";
- //=====Création du header de l'e-mail
- $header = "From: $prenom_preneur $nom_preneur <$email>\r\n";
- $header.= "$prenom_preneur $nom_preneur <$email>\n";
- $header.= "MIME-Version: 1.0\n";
- $header.= "$type boundary=\"$boundary\"\n";
- //=====Ajout du message au format HTML
- if( is_uploaded_file($tmp_file) )// si formulaire soumis
- {
- $texte = "\n--".$boundary."\n";
- $texte.= $type2;
- }
- else
- {
- $texte = $type2;
- }
- $texte.="\n <html><body>..............";
- $texte.="</body></html> \n";
- $texte.= "\n--".$boundary."\n";
- //=====Ajout de la pièce jointe
- $texte.= $ajoutpiece;
- //==========
- if (mail($adresse,$sujet,$texte,$header))
- echo(".......
- ?>
|
Ou est-ce que ça coince?
Côté traitement, j'arrive à afficher les noms des fichiers (autant qu'il y en a) donc ma boucle fonctionne bien, mais je ne reçois jamais qu'un seul fichier!
Aidez-moi svp, c'est urgent et hyper important.
Merci d'avance
Message édité par bingojm le 04-08-2010 à 20:25:48