Загрузка файла (Upload file) на Codeigniter


В этой статье я вам расскажу, как загружать файлы на сайт. Началось всё с того, что я хотел, чтобы на профиле у пользователя была аватарка. Я давно хотел написать программу для этой задачи, поэтому мне будет очень интересно поделиться с вами. Итак, начинаем. Всё, что нам нужно:

  • создать Upload.php в папке Controllers
  • создать Upload_view.php в папке Views

Upload_view

<?php echo form_open_multipart('upload/do_upload');?>

<div class='file-input'>
  <input type='file' name="userfile" required="required">
  <span class='button'>Выбрать</span>
  <span class='label' data-js-label>Не выбрано</label>
</div>
<div>
	<button type="submit" value="upload">Ок</button>
</div>
</form>


<!-- пишем Javascript код для получения файла с вашего устройства.-->
 <script type="text/javascript">

var inputs = document.querySelectorAll('.file-input')

for (var i = 0, len = inputs.length; i < len; i++) {
  customInput(inputs[i])
}

function customInput (el) {
  const fileInput = el.querySelector('[type="file"]')
  const label = el.querySelector('[data-js-label]')
  
  fileInput.onchange =
  fileInput.onmouseout = function () {
    if (!fileInput.value) return
    
    var value = fileInput.value.replace(/^.*[\\\/]/, '')
    el.className += ' -chosen'
    label.innerText = value
  }
}
</script>



Нужно дописать массив с настройками к вашему файлу с именем $config. Если файл не соответствует требованиям $config, то файл не загрузится.

  • $config['upload_path'] - имя папки, в которую вы загружаете свой файл.
  • $config['allowed_types'] - допустимые расширения
  • $config['max_size'] - максимальный размер файла
  • $config['max_width'] - максимальная допустимая ширина
  • $config['max_height'] - максимальная допустимая высота

Контроллер Upload.php


class Upload extends CI_Controller {

        public function __construct()
        {
                parent::__construct();
                $this->load->helper(array('form', 'url'));
        }

        public function index()
        {
                $this->load->view('upload_view');
        }

        public function do_upload()
        {
                $config['upload_path']          = './assets/uploads/';
                $config['allowed_types']        = 'gif|jpg|png|';
                $config['max_size']             = 10000;
                $config['max_width']            = 3000;
                $config['max_height']           = 3000;

                $this->load->library('upload', $config);

                if ( ! $this->upload->do_upload('userfile')){
                   echo "Ошибка загрузки файла";
                   die();
                }
                else
                {
                    $data = array('upload_data' => $this->upload->data());
                    echo $data['upload_data']['file_name']; // мы получаем имя файла
                    die(); 
                  
                }
        }
}



Есть ошибки или есть идея лучше? Напишите в комментариях.


Чтобы написать комментарии вам нужно войти в систему или зарегистрируйтесь

Комментарии