ThinkPHP 파일 업로드 시 중복 제거 방법
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 ();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.