使用PHP无法在服务器中上传大尺寸图像

时间:2016-08-12 12:20:10

标签: php image-uploading

在我的网站上,我想在服务器上使用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

2 个答案:

答案 0 :(得分:0)

步骤:

  1. 检查PHP是否返回任何错误
  2. 为此应用定义您自己的最大尺寸。
  3. 获取实际的最大上传大小(基于您自己的最大尺寸和 服务器设置)。
  4. 检查文件大小是否超出限制
  5. 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();
    }
    

答案 1 :(得分:0)

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