Внедрение плагина загрузки jquery «uploadify» с помощью codeigniter

Как я могу реализовать это в codeigniter?Uploadify(Jquery)

Я имею в виду, какой будет контроллер? Как отслеживается прогресс? А что будет, если flashplayer не будет установлен пользователем?

И как я могу проверить прогресс? Кто-нибудь пробовал это с codeigniter?


person esafwan    schedule 04.07.2010    source источник


Ответы (3)


Я успешно реализовал загрузку в 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>

Параметр конфигурации scriptData передается через 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 «vehicleID» для вставки записи изображения в базу данных.

Как и в случае со всеми флеш-вещами, вы должны обойти ошибку Flash Cookie. Есть два варианта: передать идентификатор сеанса через массив 'scriptData' Uploadify (как описано выше) и перезагрузить сеанс из контроллера загрузки с существующим идентификатором сеанса. Другой вариант заключается в том, чтобы Codeigniter не соответствовал пользовательскому агенту сеанса.

В application/config.php

$config['sess_match_useragent'] = FALSE;

Это предотвращает уничтожение сеанса классом сеанса, когда он видит пользовательский агент, который не принадлежит сеансу.

Если вы беспокоитесь о последствиях этого для безопасности, вам просто нужно помнить, что пользовательские агенты легко подделать, и пока ваша существующая безопасность надежно реализована, у вас не будет проблем.

person Bella    schedule 04.07.2010
comment
В настоящее время я не могу это проверить. Так как я отсутствую 2 дня. Я проверю это и вернусь сюда как можно скорее! Большое спасибо! :) - person esafwan; 05.07.2010

Я искал его для проекта, над которым я работаю, но решил не использовать его, потому что у меня есть прототип, и я не мог заставить их работать вместе. Я нашел это в своих путешествиях, хотя:

http://uploadify.com/forum/viewtopic.php?f=7&t=47&p=210&hilit=codeigniter#p1855

надеюсь, это поможет.

Просто для справки: в итоге я использовал класс загрузки CI, iframe и прототип для AJAX. См. соответствующий пост здесь.

person stormdrain    schedule 04.07.2010

Недавно мы использовали его в проекте, над которым работаем, и просто поместили образец uploadify.php в корневую папку веб-сайта.

Javascript и flash вызывают этот файл, чтобы позаботиться о загрузке, и я изменил uploadify.php, чтобы отразить данные загруженного файла. Оттуда javascript на исходной странице добавляет скрытый ввод в форму, которую мы используем.

Когда пользователь отправляет форму, вызывается контроллер/метод CI, и именно он занимается изменением размера/манипулированием изображением.

Если вам нужны дополнительные разъяснения, пожалуйста, дайте мне знать.

Изменить. Чтобы ответить на другие части вашего вопроса, если flash не установлен, отображается обычный элемент ввода файла. Как мы его используем, javascript требуется для правильной работы, но это был выбор дизайна.

person jfoucher    schedule 04.07.2010