我试图创建一个允许我上传大于5 MB的文件的应用程序但是我总是收到一个错误,说该文件很大。我修改了php.ini upload_max_filesize和post_max_size并将其设置为1GB,但它没有用。
这是我的代码:
if(is_uploaded_file($_FILES['pdf']['tmp_name'])&&($_FILES['pdf']['error'] == UPLOAD_ERR_OK)){
$file = $_FILES['pdf'];
$size = round($file['size']/10485760);
if($size > 10485760){
echo 'The uploaded file was to large.';
}
if(($file['type'] != 'application/pdf') && (substr($file['name'], -4) !='.pdf')){
echo 'The uploaded file was not a PDF.';
}
if(!array_key_exists('pdf', $add_pdf_errors)){
$tmp_name = sha1($file['name'].uniqid('', TRUE));
$dest = '../pdfs/'.$tmp_name.'_tmp';
if(move_uploaded_file($file['tmp_name'], $dest)){
$_SESSION['pdf']['tmp_name'] = $tmp_name;
$_SESSION['pdf']['size'] = $size;
$_SESSION['pdf']['file_name'] = $file['name'];
echo '<h4>The file has been uploaded!</h4>';
}else{
trigger_error('The file coul not be moved.');
unlink($file['tmp_name']);
}
}
}else{
switch ($_FILES['pdf']['error']){
case 1:
case 2:
echo 'The uploaded file was to large.';
break;
case 3:
echo 'The file was only partially uploaded.';
break;
case 6:
case 7:
case 8:
echo 'The file could not be uploaded to a system error.';
break;
case 4:
default:
echo 'No file was uploaded.';
break;
}
}
如何解决此问题?
答案 0 :(得分:0)
$size = round($file['size']/10485760);
if($size > 10485760){
echo 'The uploaded file was to large.';
}
这种逻辑似乎不正确。比较并不准确。尝试
$size = $file['size'];
if($size > 10485760){
echo 'The uploaded file was to large.';
}
同时检查“上传的文件是否过大”。是从IF或ELSE部分显示的?因为在某些情况下两者都显示相同的信息,所以首先我们必须找出它显示在哪里
答案 1 :(得分:0)
您需要调整3个设置:
upload_max_filesize
memory_limit
post_max_size
所有在php.ini