Проблема загрузки файла Cakephp - PullRequest
0 голосов
/ 15 июня 2010

Я использую Cakephp в качестве моей платформы. У меня проблема с загрузкой файлов через форму. Я использую плагин Uploader с сайта THIS .

Мой php ini-файл содержит этот фрагмент кода.

upload_max_filesize = 10M
post_max_size = 8M

это из uploader.php -> файл плагина имеет

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

В моем файле controller.php я использую этот код для установки максимального размера файла в 1 МБ во время выполнения.

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

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

В файле uploader.php мы выполняем это ...

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

ОЖИДАЕМЫЙ РЕЗУЛЬТАТ: Когда я пытаюсь загрузить файл размером 2 МБ, это не должно происходить, потому что maxFileSize составляет 1 МБ во время выполнения. Таким образом, загрузка должна завершиться неудачей.

ПРОБЛЕМА ЕСТЬ: Но он загружается.

Ориентир 1 не выполняется. (в комментариях) ... знак земли 2, кажется, не работает ... upload_max_filesize не получает значение из maxFileSize.

Пожалуйста, помогите мне ... спасибо

Ответы [ 2 ]

2 голосов
/ 15 июня 2010

Установка upload_max_filesize во время выполнения сценария довольно бессмысленна, поскольку к моменту выполнения сценария файл уже загружен и принят сервером.Если вам нужно отклонить файл в зависимости от размера в вашем скрипте (в отличие от Apache или PHP, отклоняющего его), вам необходимо оценить размер загруженного файла и «вручную» проигнорировать его, если он слишком большой.

0 голосов
/ 09 июля 2013

бессмысленно или нет, даже невозможно изменить upload_max_filesize с помощью ini_set.

upload_max_filesize имеет изменяемый флаг PHP_INI_PERDIR, что означает Entry can be set in php.ini, .htaccess, httpd.conf or .user.ini (since PHP 5.3)

как дополнительный комментарийчто post_max_size должно быть равно или больше upload_max_filesize

...