2010-07-04 111 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,但這是一個設計選擇。