首先我们先创建一个upload的类,实例化这个类,然后设置参数,设置文件大小、文件类型、上传位置然后上传文件。
public function upload(){
if(IS_GET){
$this->display();
exit;
}
$upload = new \Think\Upload();
$upload->maxSize = 0;
$upload->exts = array('csv');
$upload->rootPath = './Public/Upload/';
$info = $upload->upload();
if(!$info) {
$this->error($upload->getError());
}else{
//上传成功
$this->import($upload->rootPath . $info['file']['savepath'].$info['file']['savename']);
}
}
当我们在上传文件时难免会有重复的信息,这是我们就要做去重处理。那么如何来去重下面我们就来看看
首先我们先把原有的信息放在一个数组中,然后读取数据,检测该条信息是否存在,如果存在则继续读取下一行信息,如果不存在则写入数据。
$arrNo=array();
$fp=fopen($file,'r');
if($fp){
$files=array('no','name','sex');
$model=M('student');
$arrNo=$model->getField('no',true);
$arr=array();
while(($row=fgetcsv($fp,1000,","))!==false){
$row=array_combine($files, $row);
if(in_array($row['no'],$arrNo)){
$file="log.text";
echo $row['no']."学号已经存在".'<br>';
file_put_contents($file, $contens);
}else{
$arrNo[]=$row['no'];
$arr[]=$row;
}
if(count($arr)==1000){
$model->addAll($arr);
unset($arr);
}
}
if(count($arr)>0){
$model->addAll($arr);
}
// $this->download($file);
$this->success('导入成功');
}