Comment limiter la taille des fichiers en upload ?

Imprimer Syndication RSS 2.0

ZebulonT

Actif
Actif

Avatar de ZebulonT

Messages : 174

Inscription :

Salut jchouix,

J'aimerai pouvoir limiter la taille des fichiers en upload pour les rédacteurs avec l'ajout d'un code du genre :

Dans le formulaire html qui permet l'upload :
<form method="POST" action="upload.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>

Et dans le script qui fait l'upload (upload.php) :
<?php
// taille maximum (en octets)
$taille_maxi = 100000;
//Taille du fichier
$taille = filesize($_FILES['fichier']['tmp_name']);
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
?>

Mais, ne sachant pas bien comment GuppY (et ses plugins) sont programmés, je ne vois pas très bien o๠il faudrait ajouter ce code...

Merci d'avance pour tes remarques et suggestions éclairée. :wink:

Aller en haut de page Aller en bas de page

Réponses

jchouix

Administrateur

Avatar de jchouix

Messages : 1390

Inscription :

bonjour,
les modifs sont à faire dans les deux fichiers suivants :
1)dans le fichier upload.php situé dans le répertoire plugins/adm_redacteurs/editors/upload/
2)dans le fichier upload.inc situé dans le répertoire plugins/adm_redacteurs/inc/
A+

Aller en haut de page Aller en bas de page

ZebulonT

Actif
Actif

Avatar de ZebulonT

Messages : 174

Inscription :

OK, merci beaucoup pour l'info, je vais essayer de coder cela...
Je te tiens au courant de mes essais... :wink:
A+

Aller en haut de page Aller en bas de page

ZebulonT

Actif
Actif

Avatar de ZebulonT

Messages : 174

Inscription :

Bonjour,
Non mais j'avoue que je n'ai pas encore pris le temps d'essayer... lol
A+

Aller en haut de page Aller en bas de page

ZebulonT

Actif
Actif

Avatar de ZebulonT

Messages : 174

Inscription :

ok mais je peux regarder si tu veux?
moi cela minteresse aussi

Pas de problème, si tu réussis à coder quelque chose qui semble bien fonctionner, il te suffit ensuite de préciser ici les lignes de code que tu as ajoutées dans tel et tel fichiers et je n'hésiterai pas à faire des tests avec ton code...

Pour ma part, je pense très sérieusement inclure cette possibilité sur mon site mais j'ai pas mal de casseroles sur le feu en cette période et je n'ai donc pas tout le temps que je souhaiterai pour me lancer dans ce codage à très court terme...
Donc si tu t'en sens capable, n'hésites surtout pas à essayer ! :wink:

A+

Message édité 1 fois, dernière édition par ZebulonT le Aller en haut de page Aller en bas de page

jchouix

Administrateur

Avatar de jchouix

Messages : 1390

Inscription :

bonsoir,
je vais vous aider un peu :
Dans le fichier upload.php situé dans le répertoire plugins/adm_redacteurs/editors/upload/, le formulaire qui gère l'upload se situe entre les lignes 623 et 631.
Pour les tests sur le fichier uploadé, cela se passe entre les lignes 225 et 236.
Si le test est faux alors vous affectez la valeur 1 à la variable $pagerror et le message d'erreur affiché sera contenu dans la variable $erreur.

Par exemple, j'ai testé si le nom du fichier existait déjà pour éviter l'écrasement des fichiers.
J'ai écrit ceci :
if (file_exists(CHEMIN.$rep.'/'.$_FILES['ficup']['name'])){
    $pagerror = 1; 
    $erreur = $lang_upload[6];
}

avec $lang_upload[6] = "Echec de l'upload car un fichier portant le màªme nom existe déjà .<br /><br />Veuillez recommencer en changeant le nom du fichier à uploader";

Allez, je ne vous en dis pas plus. A vos claviers et bon codage.
A+

Aller en haut de page Aller en bas de page

mirmoleboss

Habitué
Habitué

Avatar de mirmoleboss

Messages : 51

Inscription :

merci à toi
je regarde ca dans la semaine , j'ai moi aussi pas mal de boulot.
je developpe mes plugins aussi (enfin des forks on va dire) donc je sais plus ou donner de la tàªte masi je vais le faire.
puis j'aimerais faire en sorte que chaque redacteurs n'est pas le droit de stocker plus de 15mo
a+

Aller en haut de page Aller en bas de page

jchouix

Administrateur

Avatar de jchouix

Messages : 1390

Inscription :

re-,
j'espère que vous mettrez tous les deux vos solutions ici-màªme pour aider ceux qui voudraient faire la màªme chose.
Cordialement.
A+

Aller en haut de page Aller en bas de page

ZebulonT

Actif
Actif

Avatar de ZebulonT

Messages : 174

Inscription :

Bonjour jchouix, :wink:

J'ai en fin pris le temps d'essayer de coder les modifs pour limiter la tailles des fichiers en upload...

Voici le code auquel je suis arrivé :

D'abord dans le fichier /plugins/adm_redacteurs/editors/upload/upload.php

=> Ajout après la ligne 79
//INITIALISATION DES VARIABLES DE CONFIGURATION POUR UPLOAD (A NE SURTOUT PAS MODIFIER !!)
$pathRepUpload = 'plugins/adm_redacteurs/editors/';
$allowedUpload = false;
$allowedCreateRep = false;
$allowedRenameRepFile = false;
$allowedDeleteRepFile = false;
$allowedExtFileUpload = array();
$deniedExtFileUpload = array();
//Ajout de ZebulonT
$maxFileSizeUpload = '300000';  //Taille maximale des fichiers en upload (en octets)
//Fin ajout de ZebulonT

=> Ajout après la ligne 239
if((count($allowedExtFileUpload) > 0 && !in_array(strrchr($_FILES['ficup']['name'],'.'),$allowedExtFileUpload)) || (count($deniedExtFileUpload) > 0 && in_array(strrchr($_FILES['ficup']['name'],'.'),$deniedExtFileUpload))) { //AUTORISATION EXTENSION DU FICHIER
$pagerror = 1; 
$erreur = $lang_upload[21];	
}
//Ajout de ZebulonT
//Controle de la taille des fichiers
if (filesize($_FILES['ficup']['tmp_name']) > $maxFileSizeUpload)
{
$pagerror = 1; 
//$erreur = $lang_upload[39];	
$erreur = 'Echec car la taille du fichier est supérieure à  la taille permise !...';
}
//Fin ajout de ZebulonT

=> Ajout après la ligne 640
//UPLOAD DES FICHIERS
if($allowedUpload == true) {  //AUTORISATION	
if ((isset($redacprefs['rwritfile']) && $redacprefs['rwritfile'] == "On" && $redacprefs['rwritcatfile'] == "On") || (isset($redacprefs['rwritfile']) && $redacprefs['rwritfile'] == "On" && $redacprefs['rwritcatfile'] != "On" && ereg('^('.implode($accessRepUpload,'|').')/'.$redacprefs['rnamecatfile'],$rep))) {   //AUTORISATION REDACTEUR
echo '<form name="uploadit" enctype="multipart/form-data" action="upload.php?lng='.$lng.'" method="post" onsubmit="return UploadValid(this,\'ficup\');" >';
echo '<input type="hidden" name="rep" value="'.$rep.'" />';
echo '<input type="hidden" name="upvalid" value="ok" />';
echo '<input type="hidden" name="uptype" value="'.$uptype.'" />';
echo '<input type="hidden" name="pathconfig" value="'.$pathRepUploadConfig.'" />';
echo '<input type="hidden" name="namerepconfig" value="'.$nameRepUploadConfig.'" />';
//Ajout de ZebulonT
//Si on limite la taille des fichiers en upload ici... Alors il n'y a pas de message d'erreur !...
//echo '<input type="hidden" name="MAX_FILE_SIZE" value="'.$maxFileSizeUpload.'">';
echo '<div class="labelupload">Attention : la taille des fichiers en upload est limitée à  '.$maxFileSizeUpload / 1000 .' Ko !</div>'; //On affiche un avertissement à  propos de la taille maximale autorisée pour les fichiers en upload...
//Fin ajout de ZebulonT


Ensuite dans le fichier /plugins/adm_redacteurs/inc/upload.inc
=> Ce sont les màªmes modifs mais les numéros des lignes sont différents...
=> Cela permet de contrà´ler l'upload pour les fichiers via l'admin générale des fichiers du rédacteur... Si il a l'accès à cet item...

Je donne donc juste les numéros des lignes dans l'ordre des modifs ci-dessus :
  • Ajout après la ligne 41
  • Ajout après la ligne 199
  • Ajout après la ligne 569

Tu remarqueras que j'ai essayé d'ajouter la variable "$lang_upload[39]" dans le fichier de langue /plugins/adm_redacteurs/editors/upload/lang/fr_upload.inc mais elle n'est pas prise en compte... J'ai lu quelque part qu'il fallait modifier un fichier pour pouvoir augmenter le nombre de variables mais je ne sais plus o๠je l'ai lu donc je ne sais plus quel fichier il faut modifier...

Voilà ... Cela fonctionne mais peut très certainement àªtre amélioré ! :fsb2_smyle:

A+

Message édité 3 fois, dernière édition par ZebulonT le Aller en haut de page Aller en bas de page

jchouix

Administrateur

Avatar de jchouix

Messages : 1390

Inscription :

bonjour ZebulonT,
je trouve que c'est du très bon boulot.
Pour le rajout dans le fichier de langue, cela m'étonne un peu que cela ne marche pas.
Je vais regarder ce qui cloche de ce coté là .
Merci encore pour ta collaboration.
A+

Aller en haut de page Aller en bas de page

ZebulonT

Actif
Actif

Avatar de ZebulonT

Messages : 174

Inscription :

Bonjour jchouix,

Citation (jchouix)
bonjour ZebulonT,
je trouve que c'est du très bon boulot.
Cela fait tjs plaisir à entendre :fsb2_smyle: D'autant que si je ne peux nier avoir quelques connaissances en programmation, je ne suis absolument pas un spécialiste du PHP...

Citation (jchouix)
Pour le rajout dans le fichier de langue, cela m'étonne un peu que cela ne marche pas.
Je vais regarder ce qui cloche de ce coté là .
Pour ton info, je n'ai ajouté la variable "$lang_upload[39]" que dans le fichier "fr_" et pas dans les autres... Mais mon site est mono langue [fr] ! Et je ne pense pas que cela a une influence...
Je me souviens juste d'avoir lu que le nombre de variables était limité et que si on voulais en rajouter, il fallait modifier la variable qui contrà´le ce nombre total... (?)

A+ :wink:

Aller en haut de page Aller en bas de page