Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ WEB Разработка ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

FreeBSD and Nix

Общая

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Codeigniter: file uploading


Класс для загрузки файлов
Класс File Uploading позволяет загружать файлы. Вы можете установить различные настройки, ограничивая тип и размер загружаемых файлов.
Процесс
Загрузка файлов обычно выполняется в виде следующего процесса:
Отображается форма для загрузки, позволяя пользователям выбрать файл и загрузить его. 
Когда форма передана, файл загружается по указанному вами назначению. 
Параллельно файл подвергается валидации, чтобы убедиться, что он имеет соответствующий тип и другие параметры, как вы указали. 
После загрузки пользователь увидит сообщение об успехе. 
Вот краткое руководство, демонстрирующее этот процесс. Ниже вы найдете справочную информацию.
Создание загрузочной формы
Используя текстовый редактор, создайте форму upload_form.php. Поместите в нее этот код, и сохраните в директорию applications/views/:

<html>
<head>
<title>Форма загрузки</title>
</head>
<body>

<?php echo $error;?>

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

<input type="file" name="userfile" size="20" />

<br /><br />

<input type="submit" value="Загрузить" />

</form>

</body>
</html>

Обратите внимание, что мы использовали помощник форм для открывающего тега. 

Загрузка файлов требует форму multipart, поэтому помощник создает для вас требуемый синтаксис. 

Также обратите внимание на то, что мы используем переменную $error. С ее помощью мы сможем отображать ошибки, если что-то произошло неправильно.

Страница успеха
Используя текстовый редактор создайте файл upload_success.php. В нем разместите этот код и сохраните его в вашу директорию applications/views/:

<html>
<head>
<title>Форма загрузки</title>
</head>
<body>

<h3>Ваш файл был успешно загружен!</h3>

<ul>
<?php foreach ($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>

<p><?php echo anchor('upload', 'Загрузить другой файл!'); ?></p>

</body>
</html>

Контроллер
Используя текстовый редактор, напишите новый контроллер upload.php. 
В route.php добавьте $route['upload'] = 'upload';
Поместите в upload.php этот код и сохраните в вашу директорию applications/controllers/:

<?php

class Upload extends CI_Controller {

    function __construct()
    {
        //Вызываем помошников
        parent::__construct();
        $this->load->helper(array('form', 'url'));
    }

    function index()
    {
        //Загружаем форму загрузки файла
        $this->load->view('upload_form', array('error' => ' ' ));
    }

    //Вызывается конопкой "Загрузить" из upload_form
    function do_upload()
    {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size']    = '1000';
        $config['max_width']  = '10240';
        $config['max_height']  = '10240';
        
        $this->load->library('upload', $config);

        //Получает значение поля "userfile" из upload_form
        if ( ! $this->upload->do_upload())
        {
            //если неудачно загрузили
            $error = array('error' => $this->upload->display_errors());

            $this->load->view('upload_form', $error);
        }
        else
        {
            //если удачно загрузили
            $data = array('upload_data' => $this->upload->data());

            $this->load->view('upload_success', $data);
        }
    }
}

Директория для загрузки
Вам нужна директория, куда будут загружаться картинки. Создайте директорию upload под корнем инсталляции CodeIgniter (document root сайта, рядом с index.php), и установите ее права в 777.

Попробуйте!
Чтобы попробовать вашу форму, посетите URL, соответствующий такому:

http://site/index.php/upload/

Вы должны увидеть форму для загрузки. Попробуйте загрузить файл изображения (jpg, gif или png). Если путь в вашем контроллере правильный, это должно работать.

Справка по функциям
Инициализация класса Upload
Как и большинство других классов в CodeIgniter, класс Upload инициализируется в вашем контроллере посредством функции $this->load->library:

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

Загруженный объект класса доступен через: $this->upload

Установка параметров
Как и с другими библиотеками, вы полностью контролируете, что разрешается загружать, в соответствии с указанными вами параметрами:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';

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

// Также вы можете установить параметры, вызвав инициализирующую функцию. Это полезно, если вы загружаете класс автоматически (в автозагрузке):
$this->upload->initialize($config);

В таблице ниже описаны все доступные параметры.
Параметры
Доступны следующие параметры. Значения по умолчанию позволяют не указывать этот параметр.

 

$this->upload->do_upload()
Выполняет загрузку, основываясь на указанных вами параметрах. Примечание: по умолчанию ожидается имя поля userfile, и форма должна быть типа «multipart»:

<form method="post" action="some_action" enctype="multipart/form-data" />

Если вы хотите установить собственное имя поля, просто передайте его функции do_upload():

$field_name = "some_field_name";
$this->upload->do_upload($field_name)

$this->upload->display_errors()
Получает все сообщения об ошибках, если функция do_upload() вернула FALSE. Функция не делает вывод, вы можете присвоить возвращаемые данные, как пожелаете.

$this->upload->data()
Это функция-помощник, которая возвращает массив, содержащий все данные загруженного файла. Вот прототип массива:

Array
(
[file_name] => mypic.jpg
[file_type] => image/jpeg
[file_path] => /path/to/your/upload/
[full_path] => /path/to/your/upload/jpg.jpg
[raw_name] => mypic
[orig_name] => mypic.jpg
[client_name] => mypic.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)

Объяснение
Вот объяснение элементов массива.


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект