上传文件操作
上传文件需要用数据库保存文件的id,以及url,当点击上传后就把id以及文件的url保存到数据库,要显示出来的话就在view里面调用数据库的url就OK了
function upload(){
$this->load->view('upload/upload',$data);
}
//执行上传
function doupload(){
$config['upload_path'] ='./source/uploads/';
$config['file_name']=uniqid();
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp';
$this->load->library('upload',$config);
if (!$this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
}else{
$arr=$this->upload->data();
$path='source/uploads/'.$arr['file_name'];
return $path;
}
}
这是控制器里面的方法,第一个方法是加载views下面upload文件夹下的upload视图类,加载成功后进入view...
<html>
<form action="<?php echo site_url('Uploads/doupload')?>" method="post" enctype="multipart/form-data">
<label for="file">上传文件</label><br >
<input type="file" name="userfile" id="file" >
<input type="hidden" name="seg" value="<?php echo $seg;?>" >
<br/><br/>
<input type="submit" name="submit" value="提交" >
</form>
</div>
</html>
这是上传表单,与通常表单不同的是,它需要在form里面加上 enctype="multipart/form-data"
当点击提交后,就进入到控制器doupload方法
//执行上传
function doupload(){
$config['upload_path'] ='./source/uploads/';
$config['file_name']=uniqid();
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp';
$this->load->library('upload',$config);
if (!$this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
}else{
$arr=$this->upload->data();
$path='source/uploads/'.$arr['file_name'];
return $path;
}
}
然后取到上传的路径以及文件名,为了防止文件同名,用系统的方法uniqid()随机产生文件名,这样文件上传就完成了。