Для загрузки файлов на сервер в 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.