2010-06-15 5 views
0

J'utilise Cakephp comme cadre. J'ai un problème en téléchargeant mes fichiers via un formulaire. J'utilise un plugin Uploader du site Web THIS.Problème de téléchargement de fichier Cakephp

Mon fichier phi ini contient ce code.

upload_max_filesize = 10M 
post_max_size = 8M 

c'est de uploader.php -> fichier plugin a

var $maxFileSize = '5M'; //default max file size 

Dans mon fichier controller.php, j'utiliser ce code pour définir la taille de fichier maximum 1 Mo lors de l'exécution.

function beforeFilter() { 
    parent::beforeFilter(); 

     $this->Uploader->maxFileSize = '1M'; 
} 

Dans le uploader.php, nous effectuons cette ...

if (empty($this->maxFileSize)) { 
    $this->maxFileSize = ini_get('upload_max_filesize'); //landmark 1 
} 

$byte = preg_replace('/[^0-9]/i', '', $this->maxFileSize); 
$last = $this->bytes($this->maxFileSize, 'byte'); 

if ($last == 'T' || $last == 'TB') { 
    $multiplier = 1; 
    $execTime = 20; 
} else if ($last == 'G' || $last == 'GB') { 
    $multiplier = 3; 
    $execTime = 10; 
} else if ($last == 'M' || $last == 'MB') { 
    $multiplier = 5; 
    $execTime = 5; 
} else { 
    $multiplier = 10; 
    $execTime = 3; 
} 


ini_set('memore_limit', (($byte * $multiplier) * $multiplier) . $last); 
ini_set('post_max_size', ($byte * $multiplier) . $last); //error suspected here 
ini_set('upload_tmp_dir', $this->tempDir); 
ini_set('upload_max_filesize', $this->maxFileSize); //landmark 2 

RÉSULTAT PRÉVU: Quand j'essaie de télécharger un fichier qui est 2MB de la taille, il ne devrait pas avoir lieu parce que maxFileSize est de 1 Mo au moment de l'exécution. Le téléchargement devrait donc échouer. Le problème est: Mais il est téléchargé.

Le point de repère 1 n'est pas exécuté. (dans les commentaires) ... le repère 2 ne semble pas fonctionner ... upload_max_filesize n'obtient pas la valeur de maxFileSize.

S'il vous plaît aidez-moi ... Merci

Répondre

2

Réglage upload_max_filesize lors de l'exécution du script est plutôt inutile, car au moment où le script exécute le fichier est déjà téléchargé et accepté par le serveur. Si vous devez rejeter le fichier en fonction de la taille de votre script (contrairement à Apache ou PHP qui le rejette), vous devez évaluer la taille du fichier téléchargé et l'ignorer «manuellement» s'il est trop gros.

0

inutile ou non, il n'est même pas possible de changer upload_max_filesize avec ini_set.

upload_max_filesize a le drapeau changable PHP_INI_PERDIR Wich signifie Entry can be set in php.ini, .htaccess, httpd.conf or .user.ini (since PHP 5.3)

comme commentaire supplémentaire se rappeler que post_max_size doit être égale ou supérieure alors upload_max_filesize

Questions connexes