Page 1 sur 1

envoyer 2 fichiers par un formulaire

Posté : 12 oct. 2009, 12:47
par gilledunord
Bonjour
Je ne suis ni novice ni pro, donc je ne sais pas ou mettre mon message.
En fait je suis incapable de créé un script mais j'arrive à assemblés ceux que je trouve pour mes besoins personnel.

Pour cette fois je n'arrive pas à envoyer deux, voir trois fichiers en même temps à partir d'un formulaire, et que les fichiers arrivent dans ma boite mail.
je mets trois <input type="file" name=" fichier"> mais je ne reçois qu'un fichier.
Merci pour votre aide.
Cordialement
Gilledunord

mes essais:
<input type=FILE name="fichier1">
<input type=FILE name="fichier2">
<input type=FILE name="fichier3">

<input type=FILE name="fichier[]">
<input type=FILE name="fichier[]">
<input type=FILE name="fichier[]">

<input type=FILE name="fichier[1]">
<input type=FILE name="fichier[2]">
<input type=FILE name="fichier[3]">
Mon formulaire :
<form action="mail.php" method="POST" enctype="multipart/form-data">
<input type=FILE name="fichier">
<input type=FILE name="fichier">
<input type=FILE name="fichier">
<input type="submit" name="go" value="ENVOYER">
</form>
Fichier php pour l'envoi :
<?php

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

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

$extension=get_extension($name_file);

{
$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 .= $_POST['formulaire']; $msg .= $now = date("d/m/Y à H:i");
$msg .= "\r\n";
$msg .= "\r\n";
$msg .= 'message perso';
$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 = '[email protected]';
$expediteur   = $_POST['titre'];
$reponse      = $expediteur;

mail($destinataire, $_POST['sujet'], $msg,
     "Reply-to: $reponse\r\nFrom: $expediteur\r\n".$header);

}

if($name_file!="")
{
unlink($name_file);
}
?>

Re: envoyer 2 fichiers par un formulaire

Posté : 12 oct. 2009, 14:18
par FuZZyLine
Salut,
Bonjour
Je ne suis ni novice ni pro, donc je ne sais pas ou mettre mon message.
En fait je suis incapable de créé un script mais j'arrive à assemblés ceux que je trouve pour mes besoins personnel.
Pour cette fois je n'arrive pas à envoyer deux, voir trois fichiers en même temps à partir d'un formulaire, et que les fichiers arrivent dans ma boite mail.
je mets trois <input type="file" name=" fichier"> mais je ne reçois qu'un fichier.
Merci pour votre aide.
Cordialement
Gilledunord
[...]
Qui dit multi-files dit tableau: Le préciser dans l'entête du formulaire et Indexer les variables envoyées.

Demonstration/Exemple:
http://dev.ppan.net/transfert-de-fichie ... ltiple.php

@+ bon code ;).

Re: envoyer 2 fichiers par un formulaire

Posté : 12 oct. 2009, 16:32
par stopher
Slt ,

Pour tes essais :

Ca c'est bon

Code : Tout sélectionner

<input type=FILE name="fichier[]"> <input type=FILE name="fichier[]"> <input type=FILE name="fichier[]">
Niveau php pour les récupérer , tu fais comme ceci :
$_FILES['fichier']['name'][0]
$_FILES['fichier']['name'][1]
$_FILES['fichier']['name'][2]
Good luck ,
Ch.

Re: envoyer 2 fichiers par un formulaire

Posté : 13 oct. 2009, 11:36
par gilledunord
Bonjour
Merci stopher.
ça ne marche pas, j'ai toujours un seul fichier dans ma boite mail.

Merci fuZZyline.
J'ai du changé le <? Par <?php car ça ne marchais pas.
Le problème est que ça envoi dans un répertoire, j'ai essayé de diriger par mail dans ma boite mais rien.

Que dois-je changer pour que ça parte dans ma boite mail ?
Merci à vous deux pour votre.
Cordialement
Gilledunord

Code : Tout sélectionner

<? /* variables à modifier */ $taillemax = 512000; // taille max d'un fichier (multiple de 1024) $filetype = "(jpeg|gif)"; // types de fichiers acceptés, séparés par | $nametype = "(.jpeg|.jpg|.gif)"; // extensions correspondantes $rep = "upload/"; // répertoire de destination $maxfichier = 10; // nombre maximal de fichiers /* fin des modifications */ // fichier courant (URI absolue) : formulaire récursif $PHP_SELF = basename($_SERVER['PHP_SELF']); if($_POST) { $msg = array(); // message $fichier = $_FILES['lefichier']; // simplication du tableau $_FILES for($i=0; $i<count($fichier['name']); $i++) { // nom du fichier original = nom par défaut $nom = $fichier['name'][$i]; // test existence fichier if(!strlen($nom)) { $msg[] = "Aucun fichier !"; continue; } // si un nouveau nom est renseigné (avec extension correcte) if(eregi($nametype, $_POST['lenom'][$i])) $nom = $_POST['lenom'][$i]; // répertoire de destination $destination = $rep.$nom; // test erreur (PHP 4.3) if($fichier['error'][$i]) { switch($fichier['error'][$i]) { // dépassement de upload_max_filesize dans php.ini case UPLOAD_ERR_INI_SIZE: $msg[] = "Fichier trop volumineux !"; break; // dépassement de MAX_FILE_SIZE dans le formulaire case UPLOAD_ERR_FORM_SIZE: $msg[] = "Fichier trop volumineux (supérieur à ".(INT)($taillemax/1024)." Mo)"; break; // autres erreurs default: $msg[] = "Impossible d'uploader le fichier !"; } } // test taille fichier elseif($fichier['size'][$i] > $taillemax) $msg[] = "Fichier $nom trop volumineux : ".$fichier['size'][$i]; // test type fichier elseif(!eregi($filetype, $fichier['type'][$i])) $msg[] = "Fichier $nom de type incorrect : ".$fichier['type'][$i]; // test upload sur serveur (rep. temporaire) elseif(!@is_uploaded_file($fichier['tmp_name'][$i])) $msg[] = "Impossible d'uploader $nom"; // test transfert du serveur au répertoire elseif(!@move_uploaded_file($fichier['tmp_name'][$i], $destination)) $msg[] = "Problème de transfert avec $nom"; else $msg[] = "Fichier <b>$nom</b> téléchargé avec succès !"; } // affichage confirmation for($i=0; $i<=count($msg); $i++) echo "<p>$msg[$i]</p>"; } // 1 fichier par défaut (ou supérieur à $maxfichier) $upload = (isset($_REQUEST['upload']) && $_REQUEST['upload'] <= $maxfichier) ? $_REQUEST['upload'] : 1; // choix du nombre $upload de fichier(s) echo "<form action='$PHP_SELF' method='post'>\n"; echo "Quantité <select name='upload' onChange=\"window.open(this.options[this.selectedIndex].value,'_self')\">\n"; for($i=1; $i<=$maxfichier; $i++) { echo "<option value='$PHP_SELF?upload=$i'"; if($i == $upload) echo " selected"; echo ">$i\n"; } echo "</select>\n"; echo "<input name='upload' value='$upload' size='3'>\n"; echo "<input type='submit' value='Modifier'></form>\n"; // le formulaire echo "<form action='$PHP_SELF' enctype='multipart/form-data' method='post'>\n"; // boucle selon nombre de fichiers $upload for($i=1; $i<=$upload; $i++) { echo "<p>Nom $i <input name='lenom[]'>\n"; echo "<input type='hidden' name='MAX_FILE_SIZE' value='$taillemax'>"; echo "Fichier <input type='file' name='lefichier[]'></p>\n"; } ?> <input type='submit' value='Envoyer'> </form> </body> </html>