這是一個簡單的方法來解決這個問題:
就叫 「checkPostSizeExceeded」 在你的代碼的開始
function checkPostSizeExceeded() {
if (isset($_SERVER['REQUEST_METHOD']) and $_SERVER['REQUEST_METHOD'] == 'POST' and
isset($_SERVER['CONTENT_LENGTH']) and empty($_POST)//if is a post request and $_POST variable is empty(a symptom of "post max size error")
) {
$max = get_ini_bytes('post_max_size');//get the limit of post size
$send = $_SERVER['CONTENT_LENGTH'];//get the sent post size
if($max < $_SERVER['CONTENT_LENGTH'])//compare
throw new Exception(
'Max size exceeded! Were sent ' .
number_format($send/(1024*1024), 2) . 'MB, but ' . number_format($max/(1024*1024), 2) . 'MB is the application limit.'
);
}
}
記住複製此附配功能:
function get_ini_bytes($attr){
$attr_value = trim(ini_get($attr));
if ($attr_value != '') {
$type_byte = strtolower(
$attr_value{strlen($attr_value) - 1}
);
} else
return $attr_value;
switch ($type_byte) {
case 'g': $attr_value *= 1024*1024*1024; break;
case 'm': $attr_value *= 1024*1024; break;
case 'k': $attr_value *= 1024; break;
}
return $attr_value;
}
你有機會爲php.ini? post_max_size應設置爲大於upload_max_filesize。您還應該在表單中使用,如http://ca2.php.net/manual/en/features.file-upload.post -method.php – 2010-01-25 16:43:58
@Matt McCormick - MAX_FILE_SIZE輸入效果很好 - 如果文件大小超過了,文件大小現在顯示爲0,這是我已經處理的情況。即使這可以被惡意用戶繞過,它也可以在這裏達到我的目的,因爲我只是想爲普通用戶優雅地失敗。 – 2010-01-25 16:53:44