我该如何在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