Реализация плагина загрузки jquery 'uploadify' с помощью codeigniter - PullRequest
2 голосов
/ 04 июля 2010

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

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

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

Ответы [ 3 ]

1 голос
/ 05 июля 2010

Я успешно реализовал uploadify в 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 Bug .Есть два варианта: передать идентификатор сеанса через массив «scriptData» Uploadify (как описано выше) и перезагрузить сеанс из контроллера загрузки с существующим идентификатором сеанса.Другой вариант заключается в том, чтобы Codeigniter не совпадал с идентификатором пользователя сеанса.

In application / config.php

$config['sess_match_useragent'] = FALSE;

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

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

0 голосов
/ 04 июля 2010

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

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

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

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

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

0 голосов
/ 04 июля 2010

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

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

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

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

...