2010-07-04 105 views

回答

1

我已经成功地在笨实施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 Cookie Bug。有两种选择,通过Uploadify的'scriptData'数组传递会话id(如上所述),并使用现有会话ID从上载控制器重新加载会话。另一种选择是不让Codeigniter与会话useragent匹配。

在应用/ config.php中

$config['sess_match_useragent'] = FALSE; 

这防止了会话类别从当它看到,这并不属于所述会话的用户代理破坏会话。

如果您担心这种安全隐患,您只需要记住,用户代理是微不足道的,只要您的现有安全性得到良好实施,您就不会遇到任何问题。

+0

目前我无法检查这个。因为我出去了2天。我会检查这个并尽快回到这里!十分感谢! :) – esafwan 2010-07-05 02:48:55

+0

没问题,我希望它适合你。 – DRL 2010-07-14 22:12:08

0

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

javascript和flash调用此文件来照顾上传,并且我修改了uploadify.php以回显上传的文件数据。从那里,原始页面上的JavaScript向我们使用的表单中添加一个隐藏的输入。

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

如果您需要进一步澄清,请让我知道。

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