PHP pièce jointe inutilisable

Fermé
ar-web-ouest - 15 mars 2022 à 00:04
jordane45 Messages postés 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 - 15 mars 2022 à 00:31
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 38161 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 5 mai 2024 4 657
15 mars 2022 à 00:31
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