2010-06-15 52 views
0

我使用Cakephp作爲我的框架。我在通過表單上傳文件時遇到問題。我正在使用來自 THIS網站的上傳器插件。Cakephp文件上傳問題

我的php ini文件有這段代碼。

upload_max_filesize = 10M 
post_max_size = 8M 

這是uploader.php - >插件文件有

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

在我Controller.php這樣的文件,我用這個代碼來設置最大文件大小在運行時1 MB。

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 

預期的結果: 當我嘗試上傳文件的大小爲2MB的,它不應該發生,因爲maxFileSize爲運行時爲1MB。所以上傳應該失敗。

問題是: 但它正在上傳。

地標1未被執行。 (在評論中)...地標2似乎不起作用... upload_max_filesize沒有從maxFileSize中獲取值。

請幫我...謝謝

回答

2

腳本執行過程中設置upload_max_filesize是毫無意義的,因爲通過腳本執行該文件的時間已上傳和服務器接受。如果您需要根據腳本中的大小拒絕文件(而不是Apache或PHP拒絕該文件),則需要評估上傳文件的大小,如果文件太大,則需要「手動」忽略它。

0

毫無意義,甚至無法用ini_set更改upload_max_filesize

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