<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"> × </button>
<h4 class="modal-title" id="myModalLabel"> 学生信息导入 </h4>
</div>
<div class="modal-body">
<form class="form-inline" role="form" action="__URL__/upload" method="post" enctype="multipart/form-data">
<div class="form-group">
<!-- <label class="sr-only" for="name">名称</label>
<input type="text" class="form-control" id="name"
placeholder="请输入名称"> -->
</div>
<div class="form-group">
<label class="sr-only" for="inputfile">文件输入</label>
<input type="file" id="inputfile" name="file" action="__URL__/import">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消 </button>
<button type="sumbit" class="btn btn-primary" > 导入 </button>
</div>
</form>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal -->
</div>
控制器
public function upload(){
if(IS_GET){
$this->display();
exit;
}
$upload = new \Think\Upload();
$upload->maxSize = 0;
$upload->exts = array('csv');
$upload->rootPath = './Public/Upload/';
$upload->savePath = '';
$info = $upload->upload();
if(!$info){
$this->error($upload->getError());
}else{
/*$this->success('上传成功!' . $info['file']['savepath'].$info['file']['savename']);*/
$this->import('Public/upload/'.$info['file']['savepath'].$info['file']['savename'],'utf-8');
}
}
//解析
public function import($file){
// $file = "./Public/Upload/2018-03-26/5ab88aba8c8da.csv";
$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();
while(($row = fgetcsv($fp,1000,","))!==false){
$row = array_combine($fields, $row);
if (in_array($row['no'], $arrNo)) {
$file='download.txt';
echo $row['no'] . "存在" . PHP_EOL;
file_put_contents($file, $content,FILE_APPEND);
}else{
$arrNo[] = $row['no'];
$name = $row['name'];
$py = SpGetPinyin($name);
$row['py'] = $py;
$arr[] = $row;
$file='download.txt';
$content=$row['no']."导入成功".PHP_EOL;
}
if (count($arr)==1000) {
$model->addALL($arr);
unset($arr);
}
}
if (count($arr)>0) {
$model->addALL($arr);
}
// $this->show('添加成功','utf8');
$this->download();
}
}
//下载
public function download(){
$file_name = "download.txt";//下载文件名
$filed_dir = M_ROOT."/";//下载文件目录
if (!file_exists($filed_dir.$file_name)) {
# code...
echo "找不到文件";
exit();
}else{
//打开文件夹
$file = fopen($file_dir . $file_name,'r');
//输入文件标签
Header("Content-type: application/octet-strem");
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();
}
}