Récupérer un fichier image d'un formulaire

Résolu
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012 - 14 sept. 2011 à 17:55
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.

13 réponses

pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 1
14 sept. 2011 à 20:19
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.
1
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
14 sept. 2011 à 22:49
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:


0
pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 1
15 sept. 2011 à 08:11
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
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
15 sept. 2011 à 19:21
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!!!
0

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

Posez votre question
galled Messages postés 41 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 13 décembre 2012
15 sept. 2011 à 19:38
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.
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
15 sept. 2011 à 19:50
Merci Galled. Je regarde et te répond ce soir.
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
15 sept. 2011 à 21:35
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.
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
16 sept. 2011 à 16:26
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é.
0
pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 1
16 sept. 2011 à 16:31
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.
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
16 sept. 2011 à 16:55
0
pierreSabatier Messages postés 27 Date d'inscription lundi 12 avril 2010 Statut Membre Dernière intervention 15 octobre 2011 1
16 sept. 2011 à 19:35
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.
0
stephelle Messages postés 56 Date d'inscription mercredi 14 septembre 2011 Statut Membre Dernière intervention 7 octobre 2012
17 sept. 2011 à 14:26
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.
0
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
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+
0
Rejoignez-nous