ThinkPHP 文件上传处理
Posted sentongxue
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP 文件上传处理相关的知识,希望对你有一定的参考价值。
//上传文件 public function uploadFile(){ $upload = new ThinkUpload(); $savename = date(‘Y-m-d‘).‘-‘.time();//使用date(‘Y-m-d H:i:s‘)作为文件名,因含有冒号,文件就无法保存了,文件名不可含有冒号: $upload ->exts = array(‘xls‘,‘xlsx‘); $upload ->rootPath = ‘Public/sxwx/policytracking/‘; $upload ->autoSub = false;//是否开启子目录进行保存,默认开启 $upload ->saveName = $savename; $info = $upload ->upload(); if (!$info) { $this->backMsg(‘0‘,‘文件格式有误‘); } //导入成功 vendor("phpExcel.PHPExcel"); $excel = new PHPExcel(); vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5"); vendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007"); $file = ‘Public/sxwx/policytracking/‘.$info[‘excel‘][‘savename‘]; $phpReader = new PHPExcel_Reader_Excel5();//xls格式的表格 $ext = $info[‘excel‘][‘ext‘];//获取文件的后缀名,传过来的字段名为excel if ($ext==‘xlsx‘) { $phpReader = new PHPExcel_Reader_Excel2007();//xlsx格式的表格 } $objPHPExcel = $phpReader ->load($file);//读取文件内容 /*表格格式 投保单号 保单状态 状态原因 回复处理方式 新契约下发时间 处理完成时间 业务员姓名 */ $sheet = $objPHPExcel->getSheet(0); // 取得总行数 $highestRow = $sheet->getHighestRow(); // 取得总列数 $highestColumn = $sheet->getHighestColumn(); //循环读取excel文件,读取一条,插入一条 $data=array(); //从第三行开始读取数据,第一行名字,第二行字段名 for($j=3;$j<=$highestRow;$j++){ //从A列读取数据 for($k=‘A‘;$k<=$highestColumn;$k++){ // 读取单元格 $cellVal = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); $data[$j][]=$cellVal; } } $stateTab = M(‘sxwx_policy_state‘); $stateTab ->startTrans(); foreach ($data as $key => $value) { $add[‘toubao_num‘] = $value[0]; $add[‘policy_state‘] = $value[1]; $add[‘state_reason‘] = $value[2]; $add[‘response_type‘] = $value[3]; $add[‘assign_time‘] = gmdate(‘Y-m-d‘,intval(($value[4]-25569)*3600*24));//excel读取日期时间有问题,转化为日期 $add[‘completed_time‘] = gmdate(‘Y-m-d‘,intval(($value[5]-25569)*3600*24));//excel读取日期时间有问题,转化为日期 $add[‘record_name‘] = $value[6]; $exist = $stateTab ->where($add) ->find(); if (!$exist) { $res[] = $stateTab ->add($add,array(),true); } } foreach ($res as $key => $value) { if ($value === false) { $stateTab ->rollback(); } } $stateTab ->commit(); $this -> backMsg(‘1‘,‘数据批量导入成功‘); } private function backMsg($code,$desc){ $ret[‘code‘] = $cdoe; $ret[‘desc‘] = $desc; $this ->ajaxReturn($ret); }
$add[‘assign_time‘] = gmdate(‘Y-m-d‘,intval(($value[4]-25569)*3600*24));//excel读取日期时间有问题,转化为日期 $add[‘completed_time‘] = gmdate(‘Y-m-d‘,intval(($value[5]-25569)*3600*24));//excel读取日期时间有问题,转化为日期
以上是关于ThinkPHP 文件上传处理的主要内容,如果未能解决你的问题,请参考以下文章