我使用Cakephp作为我的框架。我在通过表单上传文件时遇到问题。我正在使用 THIS 网站上传的上传器插件。
我的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。所以上传应该失败。
问题是: 但它正在上传。
Landmark 1未执行。 (在评论中)...地标2似乎不起作用...... upload_max_filesize没有从maxFileSize获取值。
请帮助我......谢谢
答案 0 :(得分:2)
在脚本执行期间设置upload_max_filesize
是没有意义的,因为到脚本执行时,文件已经上传并被服务器接受。如果你需要根据脚本中的大小拒绝文件(而不是Apache或PHP拒绝它),你需要评估上传文件的大小,如果它太大,“手动”忽略它。
答案 1 :(得分: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