php post文件上传器无法上传大文件


php post file uploader is unable to upload large files

我的php文件上传器有问题。它可以很好地上传小文件,但当我尝试上传大约8mb的大文件时,它不起作用。它想出了不允许使用文件类型这毫无意义,因为当文件较小时,相同的文件格式可以正常工作。

<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
    header("location: http://rmaltsaar.net/rfile");
    die();
}
define("UPLOAD_DIR", "uploads/");
// process file upload
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_FILES["file"])) {
    $file = $_FILES["file"];
    if ($file["error"] !== UPLOAD_ERR_OK) {
        echo "<p>Error</p>";
    }
}
// verify the file is a PDF
$mimetype = mime_content_type($_FILES['file']['tmp_name']);
if(in_array($mimetype, array('image/jpeg', 'image/gif', 'image/png', 'video/webm', 'text/plain', 'audio/mpeg', 'application/zip')))
    echo "<p>File type is okay</p>";
else {
    echo "<p>File type is not permitted.</p>";
    echo "<p>Redirecting back to R-FILE.</p>";
    echo '<meta http-equiv="refresh" content="3; url=http://rmaltsaar.net/rfile">';
    exit;
}
// ensure a random filename
$filename = $_FILES['file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$name = generateName().".$ext";
$redirect = "http://rmaltsaar.net/rfile/uploads/" . $name;
// preserve file from temporary directory
$success = move_uploaded_file($file["tmp_name"], UPLOAD_DIR . $name);
if (!$success) {
    echo "<p>Unable to save file.</p>";
    exit;
}  else {
    echo "<p>Your file has been uploaded successfully!</p>";
    echo "<p>Link to the file is: <a href='http://rmaltsaar.net/rfile/uploads/" . $name . "'>http://rmaltsaar.net/rfile/uploads/" . $name . "</a></p>";
}
function generateName($max = 6) {
    $i = 0;
    $possible_keys = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $keys_length = strlen($possible_keys);
    $str = "";
    while($i < $max) {
        $rand = mt_rand(1, $keys_length-1);
        $str .= $possible_keys[$rand];
        $i++;
    }
    return $str;
}
?>

我甚至尝试过更改php.ini的值,它们应该也很好

post_max_size = 30M
upload_max_filesize = 20M

代替:

$ext = pathinfo($filename, PATHINFO_EXTENSION);

尝试:

$ext = substr(strrchr($filename, "."), 1);

不要使用mime_cont_type(),而是使用这个

$ext = pathinfo($filename, PATHINFO_EXTENSION);

并检查可能的扩展。