【问题标题】:Implementing jquery upload plugin 'uploadify' with codeigniter使用codeigniter实现jquery上传插件'uploadify'
【发布时间】:2011-03-11 13:29:41
【问题描述】:

如何在 codeigniter 中实现这个?Uploadify(Jquery)

我的意思是控制器是什么?进度如何跟踪?如果用户没有安装flashplayer会怎样?

我如何检查进度?有人用 codeigniter 试过这个吗?

【问题讨论】:

    标签: php jquery codeigniter upload uploadify


    【解决方案1】:

    我已经在codeigniter中成功实现uploadify如下:

    在标题视图中

    <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 内容一样,您必须使用 Flash Cookie Bug。有两个选项,通过 Uploadify 的“scriptData”数组(如上所述)传递您的会话 ID,并使用现有会话 ID 从上传控制器重新加载会话。另一种选择是不让 Codeigniter 匹配会话用户代理。

    在 application/config.php 中

    $config['sess_match_useragent'] = FALSE;
    

    这可以防止会话类在看到不属于会话的用户代理时销毁会话。

    如果您担心这会带来安全隐患,您只需要记住用户代理很容易伪造,只要您现有的安全措施得到妥善实施,您就不会遇到任何问题。

    【讨论】:

    • 目前我无法检查这个。因为我出去两天。我会检查这个并尽快回到这里!十分感谢! :)
    【解决方案2】:

    我们最近在我们正在进行的一个项目中使用了它,我们只是将示例 uploadify.php 放在 web 根目录中。

    javascript和flash调用这个文件来处理上传,我修改了uploadify.php来回显上传的文件数据。从那里,原始页面上的 javascript 将隐藏的输入添加到我们正在使用的表单中。

    当用户提交表单时,一个 CI 控制器/方法被调用,它处理图像大小的调整/操作。

    如果您需要任何进一步的说明,请告诉我。

    编辑:要回答您问题的其他部分,如果未安装 flash,则会显示常规文件输入元素。我们使用它的方式,正确的功能需要 javascript,但这是一种设计选择。

    【讨论】:

      【解决方案3】:

      我正在为我正在进行的项目寻找它,但决定不使用它,因为我有原型,我无法让两者很好地协同工作。不过,我确实在旅行中发现了这一点:

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

      希望它有所帮助。

      仅供参考,我最终使用了 CI 上传类、iframe 和 AJAX 原型。见相关帖子here

      【讨论】:

        猜你喜欢
        • 2013-04-01
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        • 2011-05-01
        • 2010-11-24
        • 2011-09-30
        • 2011-12-14
        • 1970-01-01
        相关资源
        最近更新 更多