Récupérer un fichier image d'un formulaire [Résolu]

Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
- - Dernière réponse : stephelle
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
- 17 sept. 2011 à 18:34
Bonjour,
J'ai créer un formulaire en html qui renvoi les infos vers une page php qui me les envoi par mail.
Jusque là tout fonctionne.
Le problème vient maintenant du fait que je souhaite faire joindre un fichier dans le formulaire.
J'ai fait "champ de fichier" dans dream.. mais je ne le reçois pas dans le mail.

Je suis sûr que vous avez la réponse!!

Alors merci par avance pour votre réponse.
Afficher la suite 

13 réponses

Meilleure réponse
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
15 octobre 2011
3
Merci
Bonjour, tout d'abord la balise form doit contenir l'attribut enctype="multipart/form-data".

Je te conseille pour le coup d'aller ici : http://fr.php.net/manual/fr/features.file-upload.post-method.php Rien n'est plus clair que la doc officielle.

Les fichiers se trouvent dans la variable $_FILES.

Ensuite, l'écriture du mail est complexe, quelqu'un a déjà écrit sa fonction là : http://fr.php.net/manual/fr/function.mail.php#105661

Je pense que comme ça tu y arriveras !
Tiens-moi au courant.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 205 internautes nous ont dit merci ce mois-ci

Commenter la réponse de pierreSabatier
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
Bonsoir Pierre,

Non désolé, j'ai tout essayé dans tous les sens mais je n'ai toujours pas le fichier joint.
Je suis donc retourné à mon formulaire de base avant mon appel à l'aide.
Je pense qu'il ne manque pas grand chose car ça ne doit pas être si compliqué que ça.
Je réessayerai demain.
Voici l'adresse de mon formulaire : http://www.trail.rev7.fr/formulaire
Le code du formulaire:





Monsieur




Madame




Mademoiselle


Effectuez une sélection.



Nom :

e valeur est requise.

Prenom :

Une valeur est requise.




Date de Naissance :

Une valeur est requise.Format non valide. Exemple 00/00/0000



Adresse :

Une valeur est requise.



Code Postal:

Une valeur est requise.Format non valide.



Ville:

Une valeur est requise.



Pays

France
Angleterre
Belgique
Allemagne
Suisse
Espagne

Sélectionnez un élément.



Téléphone:

Une valeur est requise.Format non valide.



Email:

Une valeur est requise.Format non valide.



Club:




Ville du club:




Certificat
:




Condition de course




J'ai pris connaissance des conditions de course
Vous devez validez.


























var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none");
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2");
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "date", {format:"dd/mm/yyyy"});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3");
var sprytextfield5 = new Spry.Widget.ValidationTextField("sprytextfield5", "zip_code", {format:"zip_custom", pattern:"00000"});
var sprytextfield6 = new Spry.Widget.ValidationTextField("sprytextfield6");
var sprytextfield7 = new Spry.Widget.ValidationTextField("sprytextfield7", "phone_number", {format:"phone_custom", pattern:"00 00 00 00 00", useCharacterMasking:true});
var sprytextfield8 = new Spry.Widget.ValidationTextField("sprytextfield8", "email");
var sprytextfield9 = new Spry.Widget.ValidationTextField("sprytextfield9", "none", {isRequired:false});
var sprytextfield10 = new Spry.Widget.ValidationTextField("sprytextfield10", "none", {isRequired:false});
var spryradio1 = new Spry.Widget.ValidationRadio("spryradio1");
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1");
var sprycheckbox1 = new Spry.Widget.ValidationCheckbox("sprycheckbox1");





et ma page de traitement de l'info:


Commenter la réponse de stephelle
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
15 octobre 2011
0
Merci
Le fichier se trouve non dans $_POST['certificat'], mais dans la variable $_FILES destiné aux fichiers.

Regarde quelle est la structure de $_FILES à l'adresse suivante : http://www.php.net/manual/fr/features.file-upload.post-method.php
Commenter la réponse de pierreSabatier
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
Bon alors pour faire court!!!
J'ai progressé mais je n'ai pas réussi.
Le nom du fichier apparait bien dans mon mail mais il n'est pas joint.
J'ai créer un php.ini et un dossier uploads
J'ai copier le code de l'exemple 2 de la page internet que tu m'a laisser.
Lors de l'envoi du fichier, j'ai une erreur:

Warning: move_uploaded_file(/var/www/uploads/livre.txt) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homepages/31/d264748446/htdocs/Rev7trail/traitement2.php on line 17



Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/homepages/31/d264748446/htdocs/Rev7trail/uploads/phpGAeMss' to '/var/www/uploads/livre.txt' in /homepages/31/d264748446/htdocs/Rev7trail/traitement2.php on line 17

Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :
Voici quelques informations de débogage :Array
(
[userfile] => Array
(
[name] => livre.txt
[type] => text/plain
[tmp_name] => /homepages/31/d264748446/htdocs/Rev7trail/uploads/phpGAeMss
[error] => 0
[size] => 1792


Il est bien renommer en fichier temporaire.
La ligne 17 pour moi est:

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {


Si j'ai bien compris, il télécharge le fichier, le met dans un fichier temporaire en lui changeant le nom mais qu'il y a un problème car ma page "traitement" ne sait pas ce qu'il doit en faire??

La ligne 17 me renvoi à la ligne 14 qui elle me renvoi à la ligne 13!!

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

voilà ma journée!!

Qu'est ce qui est faut???

Merci et à demain!!!
Commenter la réponse de stephelle
Messages postés
41
Date d'inscription
vendredi 30 octobre 2009
Statut
Membre
Dernière intervention
13 décembre 2012
0
Merci
Essais
$uploaddir '/uploads/'; ou $uploaddir 'uploads/';
au lieu de
$uploaddir = '/var/www/uploads/';
et assure toi que ton répertoire uploads fonctionne.

Pour l'envois de l'attachement file

http://www.webcheatsheet.com/PHP/send_email_text_html_attachment.php
C'est en anglais

Mais si tu comprend pas l'anglais regarde simplement le code de la section Sending Email with Attachment

Je n'ai jamais fait ça, donc je peux difficilement t'aider à ce niveau.

Bonne chance.
Commenter la réponse de galled
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
Merci Galled. Je regarde et te répond ce soir.
Commenter la réponse de stephelle
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
ALors j'ai regarder avec attention l'adresse que tu m'a joint Galled.
Mais je ne souhaite pas envoyer un mail en html avec pièce jointe.
Je souhaite recevoir un mail provenant d'un formulaire html qui inclu une pièce jointe.

Merci quand même.
Commenter la réponse de stephelle
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
Bon alors aujourd'hui, j'en suis que mon fichier arrive bien sur un dossier de mon serveur. Pour le moment je m'en contenterai mais je ne lache pas l'affaire. Il ne me restera (plus qu'a!!!) renvoyer le fichier du dossier joint au mail.
Merci à vous même je ne suis pas encore arrivé, mais j'ai progressé.
Commenter la réponse de stephelle
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
15 octobre 2011
0
Merci
Stephelle,

Tu peux utiliser la fonction développée sur la page php.net/mail et passer en paramètre ton fichier.

Patience et longueur de temps font plus que force ni que rage.
Commenter la réponse de pierreSabatier
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
J'ai commencer à regarder ça aussi. http://antoine-herault.developpez.com/tutoriels/php/upload/#L3.0
Commenter la réponse de stephelle
Messages postés
27
Date d'inscription
lundi 12 avril 2010
Statut
Membre
Dernière intervention
15 octobre 2011
0
Merci
Il ne vérifie pas si le fichier existe déjà. Son script par conséquent écrasera le fichier précédent, au lieu de renommer le fichier. Les possibilités que deux fichiers aient le même nom sont grandes car il supprime les accents. Prudence donc avec ce script, l'écrasement de fichier est irréversible.
Commenter la réponse de pierreSabatier
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
Oui certe, mais alors ça va encore me poser des problèmes.
Mon fichier est renommé aléatoirement dans le dossier /tmp et retrouve son nom normal dans le fichier définitif /uploads
Si mon fichier change de nom est-ce que il va s'affiché comment dans mon mail? (son nom d'origine ou son nouveau nom.)
Ou alors je laisse son nom d'origine mais je rajoute un .date avec la date et l'heure de l'envoi.
A voir.
Commenter la réponse de stephelle
Messages postés
56
Date d'inscription
mercredi 14 septembre 2011
Statut
Membre
Dernière intervention
7 octobre 2012
0
Merci
Bon alors j'ai mis dans mon fichier uploads/ le nom du dossier qui m'est envoyé avec la date et l'heure. Comme ça pas de doublon.
Mon mail récupère le nom du fichier avec la date et l'heure. Pas d'erreur, même si j'avais dans mon mail l'heure d'envoi du formulaire.
Je vais travaillé maintenant sur mon original, à savoir l'envoi du dossier ulpoader dans le mail.
A+
Commenter la réponse de stephelle