ThinkPHP 파일 업로드 시 중복 제거 방법

3415 단어
파일 업로드 시 IS 인지 아닌지 먼저 판단GET() 방식으로 요청한 다음 업로드 클래스를 인스턴스화하고 업로드에 대한 변수를 설정한 다음 파일의 업로드 여부를 판단하고 코드는 다음과 같습니다.
public function upload(){
        if(IS_GET){
            $this->display();
            exit;
        }
        $upload = new \Think\Upload();//      
        $upload->maxSize = 3145728;//      
        $upload->exts = array('csv');//        
        $upload->rootPath = './Public/Uploads/';//         
        $upload->savePath = '';//         
        $info = $upload->upload();
        if (!$info) {
            $this->error($upload->getError());
        }else{
        $this->import($upload->rootPath . $info['file']['savepath'].$info['file']['savename']);
        }
    }

다음은 데이터를 가져오고 중복 여부를 판단하는 코드입니다. 코드는 다음과 같습니다.
 public function import($file){
        $encoding = detect_encoding($file);
        if ($encoding != 'UTF-8') {
            $contens = file_get_contents($file);
            $contens = mb_convert_encoding($contens, 'utf-8',$encoding);
            file_put_contents($file, $contens);
        }

        $fp = fopen($file, 'r');
        if ($fp) {
            $fields = array('no','name','sex');
            $model = M('student'); 
            $arrNo = $model->getField('no',true); 
            $arr = array();
            $filename = "./Public/Log/load.txt";
            $f = fopen($filename, 'w');
            
            while (($row = fgetcsv($fp,1000,","))!==false) {
            	$row = array_combine($fields, $row);
            	$name = $row['name'];
                $row['py']=SpGetPinyin($name);
                if (in_array($row['no'], $arrNo)) {
                   // echo $row['0']."    . 
"; $data .= $row['no'] . " \r
"; }else{ $arr[] = $row; $arrNo[] = $row['no']; $data .= $row['no'] . " \r
"; } if (count($arr)==1000) { $model->addAll($arr); unset($arr); } } if (count($arr)>0) { $model->addAll($arr); } $this->show(' !','utf8'); } $fwrite=fwrite($f,$data); $file_name = "load.txt"; // $file_dir = "./Public/Log/"; // // if (! file_exists ( $file_dir . $file_name )) { echo " "; exit (); } else { // $file = fopen ( $file_dir . $file_name, "r" ); // Header ( "Content-type: application/octet-stream" ); Header ( "Accept-Ranges: bytes" ); Header ( "Accept-Length: " . filesize ( $file_dir . $file_name ) ); Header ( "Content-Disposition: attachment; filename=" . $file_name ); // // echo fread ( $file, filesize ( $file_dir . $file_name ) ); fclose ( $file ); // exit (); } }

좋은 웹페이지 즐겨찾기