AJAX загрузка файлов на сервер
Создадим папку там, где у нас установлен CodeIgniter, папка будет именоватся uploads, так же выставим ей права доступа 777. Затем создадим отображение в папке с видами, назвав файл upload.php:
jQuery и One Click Upload, должны быть уже на вашем сервере. Файл отображения должен загружатся из основного контролёра например так:
Имя основного контролёра задаётся в конфиге routes.php, в строке $route['default_controller'].
После этого в папке с контролёрами создадим файл c таким же именем как и в папке с отображениями – upload.php:
Код обоих фалов достаточно прост, о дополнительних настройках плагина и библиотеки, читайте на соответствующих ресурсах. Отмечу лишь, что в jQuery скрипте:
значение поля «name» можно установить своё, например «some_field», передав её в контролёре в качестве параметра функции do_upload:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AJAX загрузка файлов на сервер.</title>
<script src="jquery.js"></script>
<script src="jquery.ocupload-1.1.2.packed.js"></script>
<script language="javascript">
$(document).ready(function() {
$('#upload').upload({
name: 'userfile',
method: 'post',
enctype: 'multipart/form-data',
action: 'upload/do_upload',
onSubmit: function() {
$('#result').text('Uploading...');
},
onComplete: function(data) {
$('#result').text(data);
}
});
});
</script>
</head>
<body>
<a id="upload" style="font-family: Verdana; color: #000" href="#">Выберите файл</a>
<span id="result"></span>
</body>
</html>
jQuery и One Click Upload, должны быть уже на вашем сервере. Файл отображения должен загружатся из основного контролёра например так:
function index() {
$this->load->view('upload');
}
Имя основного контролёра задаётся в конфиге routes.php, в строке $route['default_controller'].
После этого в папке с контролёрами создадим файл c таким же именем как и в папке с отображениями – upload.php:
<?php
class Upload extends Controller {
function __construct() {
parent::Controller();
$this->load->helper(array('form', 'url'));
}
function index() {}
function do_upload() {
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1280';
$config['max_height'] = '1024';
$config['remove_spaces'] = TRUE;
$this->load->library('upload', $config);
if (!$this->upload->do_upload()) {
echo $this->upload->display_errors();
}else {
$data = $this->upload->data();
echo "File name: $data[file_name]. File size: $data[file_size]";
}
}
}
?>
Код обоих фалов достаточно прост, о дополнительних настройках плагина и библиотеки, читайте на соответствующих ресурсах. Отмечу лишь, что в jQuery скрипте:
$(document).ready(function() {
$('#upload').upload({
name: 'userfile',
method: 'post',
enctype: 'multipart/form-data',
action: 'upload/do_upload',
onSubmit: function() {
$('#result').text('Uploading...');
},
onComplete: function(data) {
$('#result').text(data);
}
});
});
значение поля «name» можно установить своё, например «some_field», передав её в контролёре в качестве параметра функции do_upload:
$this->upload->do_upload('some_field')