上传大于5MB的文件

时间:2013-01-15 19:15:41

标签: php

我试图创建一个允许我上传大于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;
    }
}

如何解决此问题?

2 个答案:

答案 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