Limiter la taille d'une pièce jointe [Résolu]

djacquin 11 Messages postés samedi 13 mars 2010Date d'inscription 4 novembre 2012 Dernière intervention - 24 avril 2012 à 18:00 - Dernière réponse : osman06 1 Messages postés dimanche 9 mai 2010Date d'inscription 12 décembre 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 28 avril 2012 à 19:41
3
Merci
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 !

Merci nicomilville 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 122 internautes ce mois-ci

Commenter la réponse de nicomilville
djacquin 11 Messages postés samedi 13 mars 2010Date d'inscription 4 novembre 2012 Dernière intervention - 4 mai 2012 à 08:27
0
Merci
Merci ça me parait bien, je vais tester. Merci


ironman
Commenter la réponse de djacquin
osman06 1 Messages postés dimanche 9 mai 2010Date d'inscription 12 décembre 2012 Dernière intervention - 12 déc. 2012 à 23:07
0
Merci
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);
?>
Commenter la réponse de osman06

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.