Bonjour à tous,
Mon site est hébergé en mutualisé chez 1&1.
Je me casse la tête sur un formulaire et son traitement pour saisir des pièces jointes (qui sont sur mon pc, en local) afin de les ajouter un mail.
J'ai trouvé sur le net, un petit script qui me permet de sélectionner les fichiers que je voudrais joindre à mon mail.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
<!--   https://thedebuggers.com/multiple-files-upload-using-html-php/  -->
 
<form action="Debugger_Trait.php" method="post" enctype="multipart/form-data">
  <label> Select Files: </label>
  <input type="file" name="fileUpload[]" multiple > 
  <input type="submit" name="Submit" value="Upload" >
</form>
Ensuite je traite le array 'fileUpload' (de façon à charger les fichiers sur le serveur ) avec le script suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
<?php
 
		//  <!--   https://thedebuggers.com/multiple-files-upload-using-html-php/  -->
 
		// Set Upload Path
		$target_dir = 'Mes_files/';
 
    if( isset($_FILES['fileUpload']['name'])) {
    		echo "les fichiers existent "; echo "<br>";
 
        echo'<pre>';
				//   print_r($files)['fileUpload'];																// Voir tout le contenu des indices d'un array(tableau) à partir de 0
        echo'</pre>';
        echo '<br>';  
 
      	$total_files = count($_FILES['fileUpload']['name']);
      	echo "Total_files : ".$total_files; echo "<br>";  echo "<br>";
 
      	for($key = 0; $key < $total_files; $key++) {
 
       			// Check if file is selected
        		if(isset($_FILES['fileUpload']['name'][$key]) && $_FILES['fileUpload']['size'][$key] > 0) {
          			$original_filename = $_FILES['fileUpload']['name'][$key];	echo "original_filename : ".$original_filename; echo "<br>";
          			$target = $target_dir . basename($original_filename);			echo "target_dir : ".$target_dir; echo "<br>";
          			$tmp  = $_FILES['fileUpload']['tmp_name'][$key];					echo "tmp : ".$tmp; echo "<br>";
          			move_uploaded_file($tmp, $target);
          			echo "<br>";
        		}
 
        }
 
        echo "Tous les fichiers sont chargés "; echo "<br>";
        exit;
 
    }
 
?>
Les questions que je (me) pose,à ce niveau, sont les suivantes :
1- les fichiers se chargent-ils vraiment sur le serveur de chez 1&1 ?
2- Si oui, dans quel répertoire sont-ils ? ... je ne les vois sur mon site !!!

Ensuite, en supposant qu'ils soient sur le site, j'envisage utiliser une boucle pour les attacher au mail, en les séparant par des ... boundary, avec le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
 
		//  Pour ajout de PJ en PDF
		//Attachment
 
$_FILES["Fichier"] = $_FILES['fileUpload'];    //  Transfert de array
 
    if(isset($_FILES["fichier"]) &&  $_FILES['fichier']['name'] != "") { 																	//Check if file exists
        $nom_fichier = $_FILES['fichier']['name'];
        $source = $_FILES['fichier']['tmp_name'];
        $type_fichier = $_FILES['fichier']['type'];
        $taille_fichier = $_FILES['fichier']['size'];
 
        if($nom_fichier != ".htaccess"){ 																																	//Check if it's not a .htaccess file
			 			if($type_fichier == "image/jpeg" || $type_fichier == "application/pdf"){ 											//Either jpeg or pdf
                if ($taille_fichier <= 2097152) {																	 												//Size maxi above 2MB
 
                    $tabRemplacement = array("é"=>"e", "è"=>"e", "à"=>"a");				 												//Changing special characters
                    $handle = fopen($source, 'r'); 													 															//File opening
                    $content = fread($handle, $taille_fichier);							 															//File reading
                    $encoded_content = chunk_split(base64_encode($content)); 															//Encoding
                    $f = fclose($handle);																		 															//File closing
 
                    $email_message .= $passage_ligne . "--" . $boundary . $passage_ligne; 									//Second boundary opening
                    $email_message .= 'Content-type:'.$type_fichier.';name="'.$nom_fichier.'"'."\n"; 				//Content type (application/pdf or image/jpeg)
                    $email_message .='Content-Disposition: attachment; filename="'.$nom_fichier.'"'."\n"; 	//Inform there is an attachment
                    $email_message .= 'Content-transfer-encoding:base64'."\n"; 															//Encoding
                    $email_message .= "\n"; 																																//Blank line. IMPORTANT !
                    $email_message .= $encoded_content."\n"; 																								//Attachment
                }else{
                    $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais celle ci était superieure à 2Mo.". $passage_ligne;
                }
            }else{
								$email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe mais elle n'était pas au bon format.". $passage_ligne;
            }
        }else{
			      $email_message .= $passage_ligne ."L'utilisateur a tenté de vous envoyer une pièce jointe .htaccess.". $passage_ligne;
        }
    }
		//	Fin d'attachement de PJ
Suis-je dans la bonne démarche ?

Je vous remercie de vos conseils, ou remarques.
Cordialement.
Maub