简体   繁体   中英

Upload file larger than 5MB

I tried to create an application wich allows me to upload files larger then 5 MB but I always get an error that says that the file is to large. I modified php.ini upload_max_filesize and post_max_size and set it to 1GB but it did not work.

This is my code:

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;
    }
}

How can I resolve this problem?

$size = round($file['size']/10485760);
if($size > 10485760){
    echo 'The uploaded file was to large.';
}

This logic does not appear to be correct. Comparison is not accurate like that. Try

$size = $file['size'];
if($size > 10485760){
    echo 'The uploaded file was to large.';
}

Also check if 'The uploaded file was to large.' is being displayed from within your IF or ELSE part? because both display same message in certain situation, So first we have to find out where does it get displayed

There are 3 settings you need to adjust:

upload_max_filesize
memory_limit
post_max_size 

All in php.ini

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM