Bonjour à tous,

dans ma page php, je souhaiterai uploader un fichier qu'il soit de type pdf, doc, ou docx sans le mettre dans le serveur. Je l'ai mis dans une variable, mais le problème se pose lors de l'envoie.

J'ai 2 erreurs :
Warning: file_get_contents(Tps2.pdf) [function.file-get-contents]: failed to open stream: No such file or directory in

filetype() [function.filetype]: Lstat failed for Tps2.pdf
Voici le code :

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<html>
<head>
<title>Upload email puis envoie</title>
</head>
 
<body>
<form method="POST" action="verifUpload.php" enctype="multipart/form-data">
     <!-- On limite le fichier à 100Ko -->
     <input type="hidden" name="MAX_FILE_SIZE" value="100000">
     Fichier : <input type="file" name="fichier"/>
     <input type="submit" name="envoyer" value="Envoyer le fichier">
</form>
<?php
if(isset($_FILES["fichier"]["name"])	)
{
    // repertoire où vont être placé les fichiers
  //  $content_dir = $_SERVER['DOCUMENT_ROOT'].'/upload_dir/';
 
    // ajouter ici les autres extensions autorisé
    $extensions_OK = array('pdf', 'doc', 'docx'); 
 
    // Le nom du fichier ne peux pas être vide
    if(empty($_FILES['fichier']['name'])){
        exit("Aucun fichier sélectionné.");
    }
 
	echo $_FILES['fichier']['name'];
 
    // on test si le fichier est uploadé
    if( !is_uploaded_file($_FILES['fichier']['tmp_name']) ){
        exit("Le fichier n'a pas pu être uploadé.");
    }
 
 
    // récupération de l'extension du fichier
    $ext = strtolower( pathinfo($_FILES['fichier']['name'],  PATHINFO_EXTENSION) );
 
    // est ce que l'extension est valide ?
    if(!in_array($ext, $extensions_OK)) {
        exit("Le format de votre fichier n'est pas autorisé.");
    }
    // upload
			$destinataire = "1234@hotmail.fr"; // Pour plusieurs destinataires, les séparer par une virgule
			$expediteur = "4321@hotmail.fr";
			$sujet = "Mail avec pièce jointe";
 
			$delimiteur = md5(uniqid(rand())); // Création d'un numéro unique, qui délimitera les différents blocs du mail
 
			//$piecejointe = "candidat.pdf"; // Déclaration du fichier à envoyer en tant que pièce jointe
			$piecejointe =  $_FILES['fichier']['name'];;
			$contenupiecejointe = file_get_contents($piecejointe); // Récupération du contenu du fichier
			$contenupiecejointe = chunk_split(base64_encode($contenupiecejointe)); // Conversion du fichier : respect du format RFC 2045
			$typepiecejointe = filetype($piecejointe); // Récupération du type du fichier
 
			/*---- Déclaration de l'entête ----*/
			$entete = "From: $expediteur \n";
			$entete .= "Reply-to: $expediteur \n";
			$entete .= "Cc: destinataire1@gmail.com \n";
			$entete .= "Bcc: destinataire2@gmail.com \n";
			$entete .= "X-Priority: 1 \n";
			$entete .= "MIME-Version: 1.0 \n";
			$entete .= "Content-Type: multipart/mixed; boundary=\"$delimiteur\" \n"; // Déclaration du type du mail et du délimiteur
			$entete .= " \n";
			 echo"<h1><center><b>Rien du tout !!!</b></center></h1>";
			/*---- Déclaration du message ----*/
			$message = "--$delimiteur \n"; // Séparation du bloc "entete" et du bloc "message" par notre délimiteur
			$message .= "Content-Type: text/html; charset=\"iso-8859-1\" \n"; // Déclaration du type du message ainsi que la charte de codage
			$message .= "Content-Transfer-Encoding:8bit\n"; // Déclaration du type de codage
			$message .= "\n";
			$message .= "<strong>Mon Texte Gras</strong><br />";
			$message .= "<font color=\"#ff0000\">Mon Texte Rouge</font>";
			$message .= "\n";
 
			/*---- Insertion de la pièce jointe ----*/
			$message .= "--$delimiteur \n"; // Séparation du bloc "message" et du bloc "pièce jointe" par notre délimiteur
			$message .= "Content-Type: $typepiecejointe; name=\"$piecejointe\" \n"; // Déclaration du type et du nom de la pièce jointe
			$message .= "Content-Transfer-Encoding: base64 \n"; // Déclaration du type de codage
			$message .= "Content-Disposition: attachment; filename=\"$piecejointe\" \n"; // attachment = pièce jointe = fichier à sauvegarder
			$message .= "\n";
			$message .= $contenupiecejointe." \n"; // Insertion du fichier
			$message .= "\n";
			$message .= "--$delimiteur"; // Délimitation de la fin de la pièce jointe, et du mail
 
			/*---- Envoi du mail ----*/
			mail($destinataire, $sujet, $message, $entete);		
}
?>
 
</body>
</html>

Je vous remercie par avance.