Как я могу реализовать это в кодеригенере? Uploadify (Jquery)
Я имею в виду, что будет контроллером? Ходит ли отслеживание прогресса? И что произойдет, если flashplayer не будет установлен пользователем?
И как я могу проверить progess? Кто-нибудь пробовал это с помощью codeigniter?
Я успешно выполнил добавление в codeigniter следующим образом:
В заголовке :
<script type="text/javascript" src="<?php echo base_url()?>resources/js/jquery.js"></script> <link rel="stylesheet" type="text/css" media="all" href="<?php echo base_url()?>resources/uploadify/uploadify.css" /> <script type="text/javascript" src="<?php echo base_url()?>resources/uploadify/swfobject.js"></script> <script type="text/javascript" src="<?php echo base_url()?>resources/uploadify/jquery.uploadify.v2.1.0.min.js"></script>
На странице просмотра :
<input id="fileInput" name="fileInput" type="file" /> <script type="text/javascript"> $(document).ready(function() { $("#fileInput").uploadify({ 'uploader' : '<?php echo base_url()?>resources/uploadify/uploadify.swf', 'script' : '<?php echo site_url()?>/managerupload/vehicle_imageUpload', 'cancelImg' : '<?php echo base_url()?>resources/uploadify/cancel.png', 'fileExt' : '*.jpg;*.jpeg;*.png;*.gif', 'folder' : '/nonexistant', 'auto' : true, 'multi' : false, 'scriptData' : {'vehicleID': '<?php echo $vehicleID?>'}, 'onComplete' : function() {vImg_reload('<?php echo $vehicleID?>');} }); }); </script>
Параметр configData config передается через POST.
ПРИМЕЧАНИЕ . Параметр конфигурации onComplete позволяет вам выполнять функцию; в этом случае это вызов Ajax для обновления изображений для текущего автомобиля; это может быть или не иметь отношения к вам. Дайте мне знать, если это так, и я опубликую его. Как бы то ни было, я предпочел бы не мутить воды.
В контроллере :
function vehicle_imageUpload(){ $this->_checklogin(); $file_dir = "vehicle_images/"; $config['upload_path'] = './vehicle_images/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = '1000000'; $config['overwrite'] = TRUE; $config['remove_spaces'] = TRUE; $config['encrypt_name'] = FALSE; $this->load->library('upload', $config); if(! $this->upload->do_upload('Filedata')){ echo $this->upload->display_errors(); }else{ $errors = $this->upload->display_errors(); $upload_info = $this->upload->data(); // Insert file information into database $insert_data = array( 'vImg_vehicle_id_fk' => $this->input->post('vehicleID'), 'vImg_filename' => $upload_info['file_name'], 'vImg_filepath' => $upload_info['file_path'], 'vImg_primary' => 1, 'vImg_directory' => $file_dir ); $this->db->insert('vehicle_images', $insert_data); } }
Это стандартный обработчик загрузки с использованием класса загрузки CI; здесь мы использовали переданный POST элемент «идентификатор автомобиля», чтобы вставить запись изображения в базу данных.
Как и во всех флеш-файлах, вы должны работать над Flash Cookie Bug . Существует два варианта: передать идентификатор сеанса через массив «ScriptData» Uploadify, как описано выше, и перезагрузить сеанс из контроллера загрузки с существующим идентификатором сеанса. Другой вариант заключается в том, что Codeigniter не соответствует пользовательскому агенту сеанса.
В приложении / config.php
$config['sess_match_useragent'] = FALSE;
Это не позволяет классу Session уничтожить сеанс, когда видит пользовательский агент, который не принадлежит сеансу.
Если вы беспокоитесь о последствиях безопасности для этого, вам просто нужно помнить, что пользовательские агенты тривиальны для подделки, и пока ваша существующая безопасность будет реализована правильно, у вас не будет проблем.
Я смотрел на него для проекта, над которым я работаю, но решил не использовать его, потому что у меня есть прототип, и я не мог заставить их работать вместе. Я действительно нашел это в своих путешествиях:
http://uploadify.com/forum/viewtopic.php?f=7&t=47&p=210&hilit=codeigniter#p1855
надеюсь, это помогает.
Для справки я закончил использование класса загрузки CI, iframe и прототипа для AJAX. См. Соответствующий пост здесь .
Мы использовали его недавно в проекте, над которым мы работаем, и мы просто поместили образец uploadify.php в корневой каталог.
Javascript и flash вызывают этот файл, чтобы позаботиться о загрузке, и я модифицировал uploadify.php, чтобы эхо загрузить данные загруженного файла. Оттуда, javascript на исходной странице добавляет скрытый ввод в форму, которую мы используем.
Когда пользователь отправляет форму, вызывается контроллер / метод CI, и именно это касается изменения размера / манипуляции изображением.
Если вам нужны какие-либо дополнительные разъяснения, пожалуйста, дайте мне знать.
Изменить. Чтобы ответить на другие части вашего вопроса, если вспышка не установлена, отображается обычный элемент ввода файла. Как мы его используем, javascript необходим для правильной работы, но это был выбор дизайна.