使用 PHP 未在服务器中上传大尺寸图片

Large size image is not uploading in server using PHP

在我的网站中,我想在服务器中使用 PHP 上传图片。但是这个东西适用于小尺寸图像但不适用于大尺寸图像。我只想上传移动点击的图像。这是我上传图片的表格

<form action="newupload.php" enctype="multipart/form-data" method="post">
    <div class="form-group">
        <div id="image-cropper">
            <input type="file" name="user_image" class="cropit-image-input"  style="font-weight: bold;" />
        </div>
    </div>
    <div class="form-group">
        <input type="text" name="title" class="input-round big-input" id="title-modal" placeholder="Enter your Image Title" required/>
    </div>
    <div class="form-group">
        <!-- required  -->
        <span class="required margin-three">*Please complete all fields correctly</span>
        <!-- end required  -->
        <p class="text-center">
            <button class="btn btn-black no-margin-bottom btn-medium btn-round no-margin-top" type="submit" id="submitbtn">Submit</button>
        </p>
    </div>
</form> 

这是我的 PHP 上传脚本:

$errors = 0;

error_reporting(E_ALL); 
require_once 'mysqli_connect.php';
session_start();

$email = $_SESSION['user_email'];
$q = "select * from user where u_email='$email'";
$qres=mysqli_query($dbc,$q);
$qrow=mysqli_fetch_array($qres,MYSQLI_ASSOC);
$u_id=$qrow['u_id'];

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (!empty($_FILES['user_image']['name']) && !empty($_POST['title'])) {
        $image = $_FILES['user_image']['name'];
        $uploadedfile = $_FILES['user_image']['tmp_name'];
        $image_title = $_POST['title'];
        $t = uniqid();
        $filenamee = 'user-'.$t;
        $path = 'uploaded/';
        $filename = $path.$filenamee.".jpg";

        if (move_uploaded_file($_FILES['user_image']['tmp_name'], $filename)) {
            $query = "insert into selfiepost (u_id,s_title,s_upload,upload_time) v       values ('$u_id','$image_title','$filename',now())";
            $res = mysqli_query($dbc, $query);
            if ($res) {
                header('Location:home.php?insert=1');
            } else{
                 header('Location:home.php?insert=0');
            }
        } else {
            echo "Sorry, File not uploaded successfully. Please try again!!";
        }
    } else {
        echo "Files should not be empty!!";
    }
}

我的 php.ini 文件只包含这五样东西:

upload_max_filesize 20M
post_max_size 40M
max_input_time 180
max_execution_time 60
memory_limit 48M

步骤:

  1. 检查 PHP returns 是否有任何错误
  2. 为此应用定义您自己的最大尺寸。
  3. 获取实际最大上传大小(基于您自己的最大大小和 服务器设置)。
  4. 检查文件大小是否超过限制

function convertToBytes( $value ) {
  if ( is_numeric($value) ) {
    return $value;
  } else {
    $value_length = strlen(trim($value));
    $bytes = substr($value, 0, $value_length - 1);
    $unit = strtolower(substr($value, $value_length - 1));
    switch( $unit ) {
      case 'g':
        $bytes *= 1024;
      case 'm':
        $bytes *= 1024;
      case 'k':
        $bytes *= 1024;
    }
    return $bytes;            
  }
}

function getFileUploadMaxSize($app_config_max_size) {
  return min(min(convertToBytes(ini_get('post_max_size')), convertToBytes(ini_get('upload_max_filesize'))), $app_config_max_size); 
}


try {
    if ( $_FILES['user_image']['error'] != UPLOAD_ERR_OK ) { // (step 1)
        throw new Exception( _FILES['user_image']['error'] );
    }
  $app_config_max_size = 10485760; // 10MB (step 2)
  $max_size = getFileUploadMaxSize($app_config_max_size); // (step 3)
    if ( $_FILES['user_image']['size'] > $max_size ) { // (step 4)
        throw new Exception( 'limit exceeded' );
    }

  ... rest of your upload code ...

} catch (Exception $e) {
  echo $e->getMessage();
}

错误是由于 upload_max_filesize 设置为 2M 现在我将其更改为 64M 感谢大家的评论!