我該如何在codeigniter中實現這個功能? Uploadify(Jquery)用codeigniter實現jquery上傳插件'uploadify'
我的意思是控制器是什麼?跟蹤進展如何?如果用戶沒有安裝flashplayer,會發生什麼情況?
而我該如何檢查progess?有沒有人用codeigniter試過這個?
我該如何在codeigniter中實現這個功能? Uploadify(Jquery)用codeigniter實現jquery上傳插件'uploadify'
我的意思是控制器是什麼?跟蹤進展如何?如果用戶沒有安裝flashplayer,會發生什麼情況?
而我該如何檢查progess?有沒有人用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 Cookie Bug。有兩種選擇,通過Uploadify的'scriptData'數組傳遞會話id(如上所述),並使用現有會話ID從上載控制器重新加載會話。另一種選擇是不讓Codeigniter與會話useragent匹配。
在應用/ config.php中
$config['sess_match_useragent'] = FALSE;
這防止了會話類別從當它看到,這並不屬於所述會話的用戶代理破壞會話。
如果您擔心這種安全隱患,您只需要記住,用戶代理是微不足道的,只要您的現有安全性得到良好實施,您就不會遇到任何問題。
我一直在尋找一個我正在研究的項目,但決定不使用它,因爲我有原型,我無法讓兩者很好地協同工作。我在我的旅行發現這一點,雖然:
http://uploadify.com/forum/viewtopic.php?f=7&t=47&p=210&hilit=codeigniter#p1855
希望它幫助。
僅供參考,我最終使用了CI上傳類,iframe和AJAX原型。看到相關的帖子here。
我們最近在一個我們正在開發的項目中使用了它,我們只是將示例uploadify.php放入了web根目錄。
javascript和flash調用此文件來照顧上傳,並且我修改了uploadify.php以回顯上傳的文件數據。從那裏,原始頁面上的JavaScript向我們使用的表單中添加一個隱藏的輸入。
當用戶提交表單時,調用一個CI控制器/方法,這是處理調整大小/處理圖像的處理。
如果您需要進一步澄清,請讓我知道。
編輯:要回答問題的其他部分,如果未安裝flash,則會顯示常規文件輸入元素。我們使用它的方式,正確的功能需要JavaScript,但這是一個設計選擇。
目前我無法檢查這個。因爲我出去了2天。我會檢查這個並儘快回到這裏!十分感謝! :) – esafwan 2010-07-05 02:48:55
沒問題,我希望它適合你。 – DRL 2010-07-14 22:12:08