проверка размера файла при загрузке файла codeigniter завершается ошибкой с номером ошибки - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь загрузить изображение с проверкой размером до 2 МБ.Я пытаюсь проверить изображение на 6,44 МБ.Если размер изображения превышает 2 МБ, загрузчик должен получить соответствующее сообщение.Моя форма:

<?php echo form_open_multipart('Addthepic');?>
<table>
  <tr>
     <td><input type="file" name="image">(Dimension should be 370*234)</td>
     <td><input type="text" name="alt_text" placeholder="Alternate Text"></td>
     <td><input type="text" name="title" placeholder="Title"></td>
     <td><input type="text" name="caption" placeholder="Caption"></td>
     <td><input type="submit" name="submit" class="btn btn-success" value="Add Now"></td>
  </tr>
</table>
<?php echo form_close();?>

Код в моей модели:

if(!empty($_FILES['image']['name']) && $_FILES['image']['size']>2097152)
{
    return "<div class='alert alert-danger'>Max 2MB file is allowed for image.</div>";
}
else
{
    var_dump($_FILES['image']);
    $msg.="<div class='alert alert-success'>".$_FILES['image']['error']."</div>";
    $config1=array(
        'upload_path'=>$_SERVER['DOCUMENT_ROOT']."/assets/uploads/eimg/",
        'allowed_types'=>"gif|jpg|png|jpeg|pdf|JPG|JPEG",
        'overwrite'  => TRUE,
        'file_name' =>$filename
    );
    $this->load->library('upload',$config1);
    $this->upload->overwrite = true;
    if($this->upload->do_upload('image'))
    {
        $image_data =   $this->upload->data();
        $configer1 =  array(
          'image_library'   => 'gd2',
          'source_image'    =>  $image_data['full_path'],
          'maintain_ratio'  =>  FALSE,
          'width'           =>  370,
          'height'          =>  234,
          'overwrite'       =>  TRUE,
          'file_name'       =>  $filename
        );
        $this->image_lib->clear();
        $this->image_lib->initialize($configer1);
        $this->image_lib->resize();
        $this->db->where('sno',$sno);
        $this->db->update('events',array('image'=>$filename));
        if($this->db->affected_rows()>0)
            $msg.= "<div class='alert alert-success'>Image has been uploaded successfully</div>";
    }
}

Разрешения каталога eimg на сервере 0777

var_dumpдает следующий вывод:

array(5) { ["name"]=> string(12) "Imgname.JPG" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }

$ _ FILES ['image'] ['error'] дает

1

$ _ FILES ['image'] ['size'] дает

0

$ _ FILES ['image'] ['name'] правильно показывает имя файла

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

в соответствии с php документами, код ошибки 1 означает, что файл превышает установленные пределы загрузки сервера.Поскольку вы просто хотите проинформировать пользователя об этой проблеме превышения предела размера файла, вы можете просто использовать 1 для проверки своего php-кода, как показано ниже:

if(!empty($_FILES['image']['name']) && ($_FILES['image']['error']==1 || $_FILES['image']['size']>2097152))
{
    return "<div class='alert alert-danger'>Max 2MB file is allowed for image.</div>";
}

Где, 2 МБ - это предел, который был у васустановить в php.ini или через ini установить внутри вашего php-кода.

0 голосов
/ 22 ноября 2018

Вы не делаете ничего плохого в своем коде, ошибка имеет значение 1, относится к , это

из-за ограничения php и вашего условия максимального размера изображения, которое можно загрузить.

Чтобы показать предупреждение пользователю, который хочет загрузить изображение большего размера, чем вы указали в своей модели, вы можете сделать это с помощью jquery.как-то так.

HTML

<input type="file" id="myImage" name="image" />

jQuery

$('#myImage').bind('change', function() {

  //this.files[0].size
  alert(this.files[0].size);

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...