|
我在做一个上传,一次最多同时上传2个文件,但是我想规定第一个input框是上传图片,第二个input是上传视频或音频,这个属于多文件上传,但是又是分开判断文件类型。
我的部分代码是这样的:
Controller
............................................................
function do_uoload(){
// upload image
if(!empty($_FILES['photo']['name'])){
$photo = $this->_up_file('photo','img');
if(is_array($photo)){
$data['error'] = $photo;
$this->load->view('admin/main',$data);
}
}
// upload file
if(!empty($_FILES['file']['name'])){
$file = $this->_up_file('file','av');
if(is_array($file)){
$data['error'] = $file;
$this->load->view('admin/main',$data);
}
}
}
function _up_file($name,$type){
$config['new_name'] = date('YmdHis');
$config['upload_path'] = './uploads/';
if($type == 'img'){
$config['allowed_types'] = 'gif|jpg|png|jpeg|jpe|bmp';
}else{
$config['allowed_types'] = 'mp3|rm|ram|wav|avi|mpeg|mpg|mov|qt';
}
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload($name)){
return array('error' => $this->upload->display_errors() );
}else{
$success = $this->upload->data();
return $success['file_name'];
}
}
............................................................
Views
............................................................
<tr>
<td><label for="photo">Photo</label></td>
<td><input type="file" id="photo" name="photo" value="" /></td>
</tr>
<tr>
<td><label for="file">Audio Or Video</label></td>
<td><input type="file" id="file" name="file" value="" /></td>
</tr>
<?php if(!empty($error['error'])){ echo $error['error']; }else{ echo "Successful !"; } ?>
............................................................
另外,我用的是改良版的upload文件(允许自定义名)
我的测试结果如下:
第一次: 我只上传 id="photo" 框 , id="file" 框为空, 结果:非图片不允许上传 ------ 达到我想要的效果。
第二次: 我只上传 id="file" 框 , id="photo" 框为空, 结果:非视频或音频不允许上传 ------ 达到我想要的效果。
第三次: 我一起上传,两个框均为图片, 结果:上传成功 ,只判断第一个框的文件类型,不判断第二个文件类型------ 没有达到我想要的效果。
这个就是我的问题,第一个框,好像干扰了下面的判断。 不知道我错在哪里了? 谁可以指点一下? |
|