Limiter la taille d'une pièce jointe

Résolu
djacquin Messages postés 10 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 4 novembre 2012 - 24 avril 2012 à 18:00
osman06 Messages postés 1 Date d'inscription dimanche 9 mai 2010 Statut Membre Dernière intervention 12 décembre 2012 - 12 déc. 2012 à 23:07
Bonjour,

j'ai créé un formulaire avec la possibilité de joindre une ou plusieurs pièces jointes. J'ai créé une variable qui limite la taille du fichier, mais comment faire en sorte que la pièce jointe ne soit pas attachée au mail en cas de dépassement ? Faut-il agir (et comment) dans la lecture et mise en forme de PJ ou lors de l'attachement au mail.
Merci pour votre aide.
Voici des extraits de code :
//Lecture et mise en forme de la pièce jointe.
if (isset($_FILES['fichier1']) AND $_FILES['fichier1']['error'] == 0){
$file = $_FILES["fichier1"]["tmp_name"];
$file_name = $_FILES["fichier1"]["name"];
$fichier   = fopen($file, "rb");
$attachement = fread($fichier, filesize($file));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
if ($_FILES['fichier1']['error'] > 0) $erreur = "Erreur lors du transfert";	
$resultat = move_uploaded_file($_FILES['fichier1']['tmp_name'],"../email/1.jpg");
if ($resultat) echo "Transfert réussi";
echo $_FILES['fichier1']['tmp_name'];
echo $_FILES['fichier1']['name'];}


/////////////////
//ouverture frontière
$message.= $passage_ligne."--".$boundary.$passage_ligne;
 
//=====Ajout de la pièce jointe.
if (isset($_FILES['fichier1']) AND $_FILES['fichier1']['error'] == 0){
$message.= "Content-Type: image/jpeg; name="$file"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename="$file_name"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;}

//verif taille pièces jointes
if (isset($_FILES['fichier1']) && $_FILES['fichier1']['size'] > $maxsize) {echo "Votre 1ere photo n'a pu être envoyée car elle dépasse la limite de 1Mo";}
elseif (isset($_FILES['fichier1'])&& $_FILES['fichier1']['error'] == 0){echo "Votre 1ere photo a bien été envoyée";}else{echo "Pas de Photo1 envoyée";}

ironman

3 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
28 avril 2012 à 19:41
Bonjour,

Je pense que tu devrais créer une variable supplémentaire qui contiendrai true si le fichier a la bonne taille sinon false.

Donc en gros tu ferai ta condition plus haut, un truc du style :

if($_FILES['fichier1']['size'] > $maxsize) {
$pb_size = true;
}

Et ensuite tu met ta condition avant de mettre le code pour la pièce jointe comme ceci :

if (isset($_FILES['fichier1']) AND $_FILES['fichier1']['error'] == 0){
if($pb_size) {
$message.= "Content-Type: image/jpeg; name="$file"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename="$file_name"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
}
}


Si la réponse vous convient, pensez : Réponse acceptée !
3
djacquin Messages postés 10 Date d'inscription samedi 13 mars 2010 Statut Membre Dernière intervention 4 novembre 2012
4 mai 2012 à 08:27
Merci ça me parait bien, je vais tester. Merci


ironman
0
osman06 Messages postés 1 Date d'inscription dimanche 9 mai 2010 Statut Membre Dernière intervention 12 décembre 2012
12 déc. 2012 à 23:07
bonsoir a vous,
j'ai un problem avec mn code php quand je l'exécute ya que les fichiers .txt qui sont lisible et les autres non, aidez moi svp voila mn code :
<?php
// To
$to = 'mn email';

// Subject
$subject = ' Test Mail';

// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));

// Headers
$headers = 'From: Adrien Pellegrini '."\r\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
$headers .= "\r\n";

// Message
$msg = 'This is a multipart/mixed message.'."\r\n\r\n";

// Texte
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
$msg .= 'Content-transfer-encoding:8bit'."\r\n";
$msg .= 'mon msg texte.'."\r\n";

// Pièce jointe
$file_name = $_FILES['piece_jointe']['tmp_name'];
if (file_exists($file_name))
{
$file_type = $_FILES['piece_jointe']['type'];
$file_size = filesize($file_name);

$handle = fopen($file_name, 'rb') or die('File '.$file_name.'can t be open');
$content = fread($handle, $file_size);
$content = chunk_split(base64_encode($content));
$f = fclose($handle);

$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$_FILES['piece_jointe']['type'].';name='.$_FILES['piece_jointe']['name']."\r\n";
$msg .= 'Content-transfer-encoding:base64'."\r\n";

$msg .= $content."\r\n";
}

// Fin
$msg .= '--'.$boundary."\r\n";

// Function mail()
mail($to, $subject, $msg, $headers);
?>
0
Rejoignez-nous