Загрузка файлов на сервер в Codeigniter

Загрузка файлов на сервер в Codeigniter

Для загрузки файлов на сервер в Codeigniter есть отдельная библиотека File Uploading Class Этот раздел мануала очень хорошо документирован. Поэтому остается только передрать код из мануала.

Здесь и далее для примера берем заготовку блока из Прелюдии

1. Controller

/system/application/controllers/upload.php

<?php
            
            class Upload extends Controller {
            
                function Upload()
                {
                    parent::Controller();
                    $this->    load->    helper(array('form', 'url'));
                }
            
                function index()
                {
                    $this->    load->    view('upload_form', array('error' =>     ' ' ));
                }
            
                function do_upload()
                {
                    $config['upload_path'] = './up/';  // задаем путь к директории upload
                    $config['allowed_types'] = 'gif
jpg
txt
html'; // указываем допустимые расширения
                    $config['max_size']    = '100';  // max размер файла в Kb
                    $config['max_width']  = '1024';  // max размер  по вертикали
                    $config['max_height']  = '768'; // max размер  по горизонтали
            
                    $this->    load->    library('upload', $config);
            
                    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);
                    }
                }
            }
            ?>    

2. View


Вьюеров два. Один вьюер для формы system/application/controllers/upload_form.php, через которую отправляют данные:

<html> 
            <body>    
            <?=$error;?>    
            <?=form_open_multipart('upload/do_upload'); ?>    
            <input type="file" name="userfile" size="20" />    
            <br />    <br />    
            <input type="submit" value="upload" />    
            </form>    
            </body>    
            </html>    

Второй вьюер для получения информации о загруженном файле S:\system\application\controllers\upload_success.php, через которую отправляют данные:

<html> 
            <body>    
            <h3>    Your file was successfully uploaded!</h3>    
            <ul>    
            <?php foreach($upload_data as $item =>     $value):?>    
            <li>    <?=$item;?>    : <?=$value;?>    </li>    
            <?php endforeach; ?>    
            </ul>    
            <p>    <?=anchor('upload', 'Upload Another File!'); ?>    </p>    
            </body>    
            </html>    

3. Директория для загрузки.

Создаем директорию с именем up для загрузки файлов в корневой директории. Для простоты директория задается в контроллере через относительный путь.
$config['upload_path'] = './up/';
При переносе на Unix-хостинг не забываем открыть директорию на чтение и запись. Впрочем, если забудем - не беда - CodeIgniter напомнит сообщением .
"The upload destination folder does not appear to be writable.";

Теперь можно запустить скрипт загрузки http://ci/upload/ и проверить работу скрипта

4. Руссификация

Русификация сообщения об ошибках выполняется так же как и для валидатора в предыдущем примере. Языковой файл upload_lang.php, отвечающий за upload лежит в соответствующей директории.

5. The End

Все что создано на этом шаге складываем в архивную папку step3.

03 September 2008 ключевые слова:
Ссылки на статьи по теме: "
Обсуждение в блоге-форуме тем: ""