Pb pour joindre fichier a formulaire HTML

Papy2B Messages postés 33 Statut Membre -  
 Rook -
Bonjour,

Je suis débutant en HTML. Je viens de faire un site et dans ma page contact j'ai fait un formulaire.
J'ai mis la possibilité au client de me joindre un fichier, le problème c'est que je le recois pas ! comment ca se fait ?

Merci!

Voici mon formulaire :

<FORM enctype="multipart/form-data" action="mailto:blablabla@blablavla.fr" method="post">

<FIELDSET STYLE="background: #FFFFDD ;">
<LEGEND STYLE="background: #E5F5EE ;" <b>Complément de demande :</b></LEGEND>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="10" WIDTH="95%">
<TR>
<TD WIDTH="70%">
Précisions ou informations concerantn votre demande :<br>
<textarea name="Autres" cols="100" rows="3"></textarea><br>
<br>
Nous joindre un fichier (Plans, photo...) :
<input name=fichier type=file />

</TABLE>
</FIELDSET><br><br>
<CENTER><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="10" WIDTH="95%">

<TR><TH>

<INPUT TYPE=SUBMIT VALUE=" Soumettre formulaire "> <INPUT TYPE=RESET VALUE=" Effacer ">
</TABLE></CENTER>
</FORM>
A voir également:

48 réponses

Résumé de la discussion

L’utilisation d’un formulaire avec enctype="multipart/form-data" et action="mailto:…" est peu fiable pour recevoir des fichiers joints et nécessite un traitement côté serveur pour gérer l’envoi des pièces jointes.
La solution consiste à remplacer l’action par un script PHP (par exemple mail4.php) qui reçoit le fichier via $_FILES['fichier'], le déplace sur le serveur et construit un message MIME avec pièce jointe avant d’envoyer l’e-mail au destinataire.
En test local, il faut vérifier les chemins (mail3.php vers mail4.php), s’assurer que les balises HTML sont correctement fermées, et configurer un serveur SMTP accessible pour que mail() fonctionne (par exemple via EasyPHP).
Une fois le script en place et le serveur SMTP opérationnel, l’attache peut être reçue, en veillant à renseigner l’adresse du destinataire dans mail4.php.

Généré automatiquement par IA
sur la base des meilleures réponses
Papy2B Messages postés 33 Statut Membre 1
 
c'est fait et effectivement ca marche le feu est passé au vert, j'ai mis les fichiers dans le repertoire que tu m as dit.

Je fais quoi maintenant ?

:o)

COurrage, on va y arriver...
1
Pi_Xi Messages postés 2274 Statut Membre 149
 
Bonjour,

la fonction mailto() permet d'envoyer un mail, pas de joindre un fichier, il va falloir procéder différemment, en utilisant un script PHP par exemple.
0
Papy2B Messages postés 33 Statut Membre 1
 
Ah ok...

Peux tu m'aider car j'y connais rien du tout :o)
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Bonjour,

http://www.asp-php.net/ressources/bouts_de_code.aspx?id=83

et aussi:

formulaire php fichier joint

Dis-moi si tu rencontres des soucis!

Bon courage :o)
0

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

Posez votre question
Papy2B Messages postés 33 Statut Membre 1
 
Tout d'abord merci de m'aider...

Bon j'ai fait un copier coller de ton formulaire avec le fichier joint. J'ai mis mon adresse mail, et ca ne marche toujours pas, c'est même pire, IE plante et m'affiche un rapport d'erreur...

Quand je met ENCTYPE="TEXT/PLAIN" ca marche bien pour le contenu du formulaire je recois bien toutes les données mais des que je remplace par "multipart/form-data" et que je joins un fichier la ca plante...

Personne ne pourrai reprendre mon code et modifier la ligne qui merde ? ca serait plus simple car je comprend vraiement rien au code moi..
.lol

MERCI
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Quel fichier as-tu essayé de joindre? car le code du premier lien ne prend pas en compte toutes les extensions, il fonctionne seulement avec : .doc, .xls, .png, .gif et .bmp, mais on peut arranger ça.

C'est normal que ça plante si tu envois une autre extension, car il n'y a pas d'instructions dans ce cas (je viens de m'apercevoir que ce code n'est pas complet!)

Par ailleurs, la valeur "text/plain" ne prend en compte que les données du formulaire, tu ne peux pas l'utiliser pour joindre un fichier.

Envoi ton code ;o)
0
Papy2B Messages postés 33 Statut Membre 1
 
Ben ce que j'appelle mon code c'est ca : fais un copié coller et va voir a quoi ca ressemble.. j'ai bien sur d'autre rubriques ds mon questionnaire mais je l'ai simplifié car la c'est surtout pour comprendre comment faire pour que mes clients arrivent a joindre un fichier...pour l'instant ca marche pas avec le code ci dessous...

<FORM enctype="multipart/form-data" action="mailto:blablabla@blablavla.fr" method="post">

<FIELDSET STYLE="background: #FFFFDD ;">
<LEGEND STYLE="background: #E5F5EE ;" <b>Complément de demande :</b></LEGEND>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="10" WIDTH="95%">
<TR>
<TD WIDTH="70%">
Précisions ou informations concerantn votre demande :<br>
<textarea name="Autres" cols="100" rows="3"></textarea><br>
<br>
Nous joindre un fichier (Plans, photo...) :
<input name=fichier type=file />

</TABLE>
</FIELDSET><br><br>
<CENTER><TABLE BORDER="0" CELLSPACING="0" CELLPADDING="10" WIDTH="95%">

<TR><TH>

<INPUT TYPE=SUBMIT VALUE=" Soumettre formulaire "> <INPUT TYPE=RESET VALUE=" Effacer ">
</TABLE></CENTER>
</FORM>
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Bonjour,

oui ce code là je l'avais déjà vu, je demandais celui après les modif pour joindre un fichier...
0
Papy2B Messages postés 33 Statut Membre 1
 
Ah ok...

Ben j'ai fait encore aucune modif, j'avais tout simplement echangé mon code avec celui que tu m'as donné..Lol

Mais ca faisait planter IE (message d erreur).

Et puis comme je disais j y connais rien, si je modifie mon fichier j'ai peur de faire des conneries a moins qu on m explique exactement ou je dois modifier...

Bon je v quand mm essayer mais c pas gagné..
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
et c'était quoi le message d'erreur?

Tu as bien crée 2 fichiers? mail3.php (le formulaire) et mail4.php??
0
Papy2B Messages postés 33 Statut Membre 1
 
AAAAA !!!

Non ! j'avais juste copier mail4.php je pensais pas qu'il fallait mettre l autre aussi...

Dslé ;o)

Je v voir ca
0
Papy2B Messages postés 33 Statut Membre 1
 
J'ai pas réussi,

EN fait il faut que je te dise une info que j'ai omis de te dire mais qui je vois a son importance..

Je fais mon site via un logiciel qui fait tout TOWEB.

Donc si tu veux il me demande le nom de mes rubriques etc.. je définis pas moi même le code que j utilise et les extensions.

Cependant il me laisse ajouter du code HTML si je le desire. Cependant je reste à l interieur du logiciel, donc je vois pas comment créer 2 pages différentes dans la meme rubriques "contact" de mon site.. je suis obligé de mettre le code à la suite ou alors je sait pas comment faire...

En fouillant dans le repertoir du site j'ai vu des fichier avec les extensions .xml
J'ai trouvé ca aussi en en ouvrant un <?xml version="1.0" encoding="ISO-8859-1" ?>

C'est pour ca que je demandais qu on modifie directement mon code car là je suis perdu...lol

C'est pas possible de mettre tout le code à la suite dans la même page ?
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Désolée mais là du boulot, je n'ai pas le temps de faire ton code :o)

Dans ton répertoire, tu peux faire un clic droit<<Nouveau<<Document texte, et tu nomme ce fichier mail4.php, puis tu recopie le code adéquat dedans.
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
J'ai un peu de temps alors j'ai adapté le code vite fait (j'espère ne rien avoir oublié)

Tout d'abord, pour le formulaire, tu as oublié de fermer des balises </TR></TD>, et des guillemets aussi. J'ai apporté qq petites modifs à ton code:

<FORM enctype="multipart/form-data" action="./mail4.php" method="post"> 
<FIELDSET STYLE="background: #FFFFDD ;"> 
<LEGEND STYLE="background: #E5F5EE ;" <b>Complément de demande :</b></LEGEND> 
 <TABLE BORDER="0" CELLSPACING="2" CELLPADDING="10" WIDTH="95%"> 
  <TR> 
    <TD WIDTH="70%">Précisions ou informations concernant votre demande :<br> 
      <textarea name="Autres" cols="100" rows="3"></textarea>
      <br><br>Nous joindre un fichier (Plans, photo...) : 
      <input type="file" name="fichier" /> 
   </TD>
  </TR>
 </TABLE> 
</FIELDSET><br><br> 
<CENTER>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="10" WIDTH="95%"> 
 <TR>
   <TH> 
      <INPUT TYPE="SUBMIT" VALUE=" Soumettre formulaire ">
      <INPUT TYPE="RESET" VALUE=" Effacer "> 
   </TH>
  </TR>
 </TABLE>
</CENTER> 
</FORM>

pour le fichier mail4.php:
<html>
<body>
<center>
<?

$name_file = $_FILES['fichier']['name']; 
$source=$_FILES['fichier']['tmp_name'];

move_uploaded_file($source, "./".$name_file); 

$extension=get_extension($name_file);

$type="text/plain";
if($type=="doc")
{
   $type="text/vnd.ms-word";
}
else if($type=="xls")
{
   $type="text/vnd.ms-excel";
}

$type2="image/png";

if($extension=="gif")
{
   $type2="image/gif";
}
else if($extension=="bmp")
{
   $type2="image/bmp";
}

function get_extension($filename)
{
   $parts = explode('.',$filename);
   $last = count($parts) - 1;
   $ext = $parts[$last];
   return $ext;
}

//----------------------------------
// Construction de l'entête
//----------------------------------

$boundary = "-----=".md5(uniqid(rand()));
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";

$msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/mixed.\r\n";

$msg .= "--$boundary\r\n";

$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .= $_POST['Autres'];
$msg .= "\r\n";

if($name_file!="")
{
$file = $name_file;
$fp = fopen($file, "rb");  
$attachment = fread($fp, filesize($file));
fclose($fp);

$attachment = chunk_split(base64_encode($attachment));


$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type2; name=\"$file\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline; filename=\"$file\"\r\n";
$msg .= "\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n\r\n";
$msg .= "--$boundary--\r\n";
}

$destinataire = "toto@tata.fr";

mail($destinataire, "le sujet", $msg, $header);

if($name_file!="")
{
unlink($name_file);
}
print("<br>\n");
print("<br><A href=./mail3.php target=\"principal\"><font size=\"2\">Envoyer un autre mail</font></A>");
?>
</center>
</body>
</html>

0
Papy2B Messages postés 33 Statut Membre 1
 
Franchement merci pour le mal que tu te donne, mais je crois que ten a malheureusement pas encore finit avec moi ! loool
:o)

C'est exactement ce que j'ai fait mais windows n'a pas l'air de reconnaitre cette extension... ca m 'apparait comme un fichier qu'il reconnait pas...

Comment mon logiciel où tous les fichiers sont en .xml va savoir qu'il peut ouvrir ces fichiers, si ca se trouve il peut mm pas les lire vu que c'est pas les mêmes extensions ?
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
ben faut passer par un serveur php, sinon ça peut pas marcher!

Je repasse peut-être dans 30 minutes, après je suis plus là pour aujourd'hui, je prendrai des nouvelles demain. Essaye de mettre en place le code ci-dessus :o)

Bonne fin de journée!
0
Papy2B Messages postés 33 Statut Membre 1
 
Passer par un serveur PHP ?? ca veut dire quoi...olalala ca devient trop compliqué pour moi tout ca je sens que mes clients m'enverons des fichiers par mail plus tard...ca me soul trop là j'y comprend absoluement rien tu me parle chinois ! lol

J'ai fait les 2 fichiers mail3.php et mail4.php

Je les ai mis dans le repertoire ou se trouve l index.html du site

mais bon ca ne marche pas et pour cause, le logiciel que j utilise à sa propre hirarchie et ses codes ou je ne sais quoi donc ce que je lui rajoute il en tiens pas compte...je peux pas ajouter des pages manuellement comme on est en train de faire, donc je suis obligé de rentrer dans le logiciel d'aller ds ma page contact dans la partie texte, d'y inserer un champ texte, par exemple %MAIL4%.

En fait cela signifie qu'il renvois vers le champ MAIL4. le champs MAIL4 est en fait le code que j ai copier collé de ce que tu appelle toi MAIL4.PHP
Le probleme c'est que ca renvois qur mail4.php et la ca sort donc de mon site pour aller sur ta page, mais l utilisateur n'est plus dans mon site...

C LA MERDE

telecharge la demo du logiciel tu comprendra peut etre mieux...lol

https://www.lauyan.com/fr/index.html

C'est gratuit (demo) c 'est pas gros
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Bonjour,

tu n'as pas besoin de ce logiciel pour faire ce que l'on cherche à ajouter ; tu peux utiliser le bloc note, ou mieux télécharger Notepad++

On peut dans un premier temps faire fonctionner nos 2 fichiers indépendemment de ton site et l'intégrer plus tard, éventuellement par un lien vers le fomulaire si on ne trouve pas d'autre solution.

Par contre pour que ça fonctionne, tu es obligé de passer par un serveur php, je te propose donc d'installer EasyPhp, comme son nom l'indique il est très simple d'utilisation ;o)

http://www.01net.com/windows/Internet/serveur_ftp/fiches/14744.html

Php est un langage serveur et doit donc passer par un serveur pour être interprété. Ca sonne chinois car tu n'en a jamais entendu parler, mais il n'y a rien d'obscur là-dedans, on peut y arriver ensemble.
0
Papy2B Messages postés 33 Statut Membre 1
 
OK j installe tout ca et je re
0
Papy2B Messages postés 33 Statut Membre 1
 
re :

Alors j'ai installer tout ce beau monde à savoir notepad++ et eastphp.

J'ai recréé les deux fichier mail3.php et mail4.php avec notepad++ je les ai pour l'instant enregistré sur mon bureau.

J'ai lancé easyphp et là j'ai ce message qui s'affiche : le port d'apache (80) est occupé par inetinfo.exe
C un pb ?

Je clique sur ok et la j ai deux feux, un rouge avec apacha a coté et un vert avec MySQL démarré

Voila ou j'en suis :o)
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Ah ben ça avance ^^

Alors pour le conflit, tu fais clic droit sur le fichier "httpd.conf" qui se trouve à l'emplacement:

C:\Program Files\EasyPHP1-8\apache\conf

et tu clic sur "Edit with Notepad++"

Puis tu fais une recherche (CTRL+F) sur "Port 80", tu ajoute un "#" au début de la ligne pour la commenter et tu ajoute la ligne (sans le "#"):

Port 8080

Ainsi il n'y aura plus de conflit.

Ensuite pour atteindre tes pages avec EasyPhp, il faut que tu places tes fichiers dans le répertoire:

C:\Program Files\EasyPHP1-8\www
0
Papy2B Messages postés 33 Statut Membre 1
 
Petite précisions, tu me parles biens des fichiers mail3.php et mail4.php a mettree ds le repertoire ou tout le site ?
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
On peut déjà tester le formulaire sans le site dans un premier temps. Le point d'entrée sera donc mail3.php

1- Dans www/, tu crée un répertoire, tu mets tes 2 fichiers dedans,

2- puis clic droit sur l'icône de EasyPhp<<Administration (en bas de l'écran à droite). Dans la première liste nommée Apache, tu clic sur "Ajouter", tu tape un nom pour l'alias et tu rentres le nom du chemin du répertoire (par exemple C:\Program Files\EasyPHP1-8\www\FormEnvoiMail), puis tu valide.

3- Ensuite clic droit sur l'icone EasyPhp<<Redémarrer,

4- puis Administration et tu clic sur le nom de ton alias. Si tout fonctionne bien, les deux noms de tes fichiers s'affichent, tu clic sur mail3.php et le formulaire s'affiche.

Par la suite, il faudra placer le répertoire du site entier dans ce répertoire "www/".
0
Papy2B Messages postés 33 Statut Membre 1
 
quand je clique sur "administration" ca m envoit dans l internet explorer à cette adresse http://127.0.0.1:8080/home/
Donc une page d erreur quoi...

J'ai pas de menu
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Oui, ça arrive, essaye:

http://localhost/home/
0
Papy2B
 
Ok j'ai procédé aux etapes...

Maintenant je fé quoi ? comment lancer les pages ?
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
via: http://localhost/home/

tu clic sur l'alias que tu as donné à ton répertoire, puis sur mail3.php
0
Papy2B Messages postés 33 Statut Membre 1
 
Ok tout apparait, quand je clique sur mail3.php j'ai bien le formulaire qui apparait, je charge un fichier et je fais "soumettre" et là page d'erreur :

http://localhost/FormEnvoiMail/mail4.php
La page est introuvable

:o(

Pourtant elle y est
quand je clique dessus elle apparait d'ailleur y a marqué que ca c normal :
\n"); print("
Envoyer un autre mail"); ?>

Bref je vois toujours pas ou on veut en venir car maintenant comment je fais le lien avec mon site ? je veux dire comment mon formaulaire va apparaitre a l interieur de mon site et pas une page a part ?
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Bonjour,

faut déjà voir si ce script marche, je vais tester en local là. Il va surement falloir que tu modifie une ligne du php.ini dans le répertoire apache, on verra ça quand tu n'auras plus ton erreur d'emplacement de fichier.

Après on ajoutera un <a href="...">Envoyer un fichier</a>, sur ta page si ça te va. J'y connais rien moi au logiciel que tu utilise, j'ai toujours tout tapé à la main pour faire un site.

Tu as bien placé "mail4.php" dans le même répertoire que mail3.php? g pas cette erreur chez moi, et tout fonctionne à merveille ^^

Ca m'impressionne toujours la rapidité avec laquelle le mail arrive à destination! :o)
0
Papy2B Messages postés 33 Statut Membre 1
 
tu me fais bisquer moi ca marche pas !!!!

Les 2 fichiers sont biens dans le même répertoire....

J'attend tes explications pour les modifs dont tu parles :)

MERCI pour ta patience...
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Ca marche pas et y'a toujours le même message d'erreur?

Chez moi, les 2 fichiers mail3.php et mail4.php sont dans le même répertoire que j'ai nommé "form", donc à l'emplacement:

C:\Program Files\EasyPHP1-8\www\form
0
Papy2B Messages postés 33 Statut Membre 1
 
Ben si le formulaire mil3.php ca marche, je le vois quand je clique dessus mais quand je fais "parcourir" je joins un fichier, je fais ensuite "soumettre" et la ca m'envois sur mail4.php et mail4.Php c'est juste une page blanche avec deux ligne tout en haut :

\n"); print("
Envoyer un autre mail"); ?>

Voila...

Ils e passe rien apres...

On peut pas dire que ca marche quoi ! lol
0
Pi_Xi Messages postés 2274 Statut Membre 149
 
Je reçois le mail avec le fichier joint donc le script fonctionne :o)

C'est normal que ça marche pas chez toi, tu ne passe pas par le serveur php on dirait ; n'oublies pas de faire tourner EasyPhp et d'ouvrir ton fichier en passant par le menu Administration.
0