PHP pièce jointe inutilisable

ar-web-ouest -  
jordane45 Messages postés 40050 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

j'ai un gros soucis dans mon code je ne sais pas comment gérer le chemin de ma pièce jointe ce qui fait qu'a la réception du mail impossible d'ouvrir la pièce jointe.

Et le truc c'est que je ne veux pas avoir à upload l'image sur mon serveur avant de l'envoyer car si pour chaque client je dois faire upload l'image sa risque d'être compliqué.

Voici mon code :


<?php
if(isset($_POST["gotest"])){
echo "click ok";
$from = $_POST["from"];
$to = $_POST["to"];
$file = $_POST['file'];

if(!empty($from) && !empty($to)) {
$subject = 'le sujet';
$boundary = md5(uniqid(rand()));
$headers = 'From: ' . $from . "\r\n" .
'Reply-To: ' . $to . "\r\n" .
'MIME-Version: 1.0 ' . "\r\n" .
'Content-Type: multipart/form-data; boundary=' . $boundary . "\r\n" .
'X-Mailer: PHP/' . phpversion();

$message = "--$boundary " . "\r\n";
$message .= "Content-Type: text/plain; charset= utf-8 \r\n";
$message .= "Content-Transfer-Encoding: 8bit \r\n";
$message .= "\r\n";

//$message .= $from . " test \r\n";

/*$mime_type = mime_content_type($file);
$file_binary = file_get_contents($file);
$finalpath = 'data:' . $mime_type . ';base64,' . base64_encode( $file_binary );*/


$join = file_get_contents($file, true);
$join .= chunk_split(base64_encode($join));

$message .= "--$boundary" . "\r\n";
$message .= "Content-Type: image/jpeg;name\"image\" \r\n";
$message .= "Content-Transfer-Encoding: base64 \r\n";
$message .= "Content-Disposition: inline; filename=\"image\" \r\n";
$message .= "\r\n";
$message .= $join . "\r\n";

$message .= "--$boundary--";

mail($to, $subject, $message, $headers);
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
<div style="display: flex;">
<label for="from">email qui envoi :</label>
<input type="email" name="from">
</div>
<div style="display: flex;">
<label for="to">recevoir à l'email :</label>
<input type="email" name="to">
</div>
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input type="file" name="file" accept="image/jpeg,image/gif,image/png,application/pdf,image/x-eps">
</div>
<input type="submit" value="send" name="gotest">
</form>
</body>
</html>

merci d'avance pour votre aide

Configuration: Windows / Firefox 98.0
A voir également:

1 réponse

jordane45 Messages postés 40050 Date d'inscription   Statut Modérateur Dernière intervention   4 758
 
Bonjour,
À l'avenir merci d'utiliser les balises de code pour poster du code sur le forum
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Et en ce qui concerne ta demande, que tu veuilles l'uploader ou non sur ton serveur... Le fichier ne se trouve pas dans la superglobal $_POST mais dans $_FILES et sera, par conséquent, forcément charger dans le répertoire temporaire de ton serveur.
Si vraiment tu veux éviter un chargement sur le serveur, il va te falloir lire le contenu de ton fichier en javascript et envoyer cette donnée via un input hidden dans ton formulaire.

0