thinkphp上传文件

public function upload(){
		if(IS_GET){
			$this->display();
			exit;
		}
		$upload = new \Think\Upload(); //实例化上传类
		$upload->maxSize = 0; //设置附件上传大小  0为不限大小
		$upload->exts = array('csv'); // 设置附件上传类型
		$upload->rootPath = './Public/Upload/'; //设置附件上传根目录
		$Upload->savePath = ''; // 设置附件上传(子)目录

		//上传文件  上传到Upload中
		$info = $upload->upload();
		if(!$info){ //上传错误提示错误信息
			$this->error($upload->getError());
		}else{
			// $this->success('上传成功!'.$info['file']['savePath'].$info['file']['savename']);
			$this->import($upload->rootPath.$info['file']['savepath'].$info['file']['savename']);

			//显示路径  2018-03-21/5ab20fda737ae.csv
			// $this->show($info['file']['savepath'].$info['file']['savename'],'utf8');   

			//输出路径  ./Public/Upload/2018-03-21/5ab2107a46e67.csvutf8
			// echo $upload->rootPath.$info['file']['savepath'].$info['file']['savename'],'utf8';  
		}
	}


保存文件到指定文件夹

public function import($file){
		// $file = "./Public/Upload/2018-03-22/5ab30cc2b290d.csv";
		$encoding = detect_encoding($file);  //输出编码格式

		if($encoding != 'utf-8'){
			$contens = file_get_contents($file);
			// dump($contens);
			// exit;
			$contens = mb_convert_encoding($contens, 'utf-8',$encoding);

			//file_put_contents — 将一个字符串写入文件
			file_put_contents($file, $contens);  
		}
		// exit;

		$fp = fopen($file,'r');  //fopen — 打开文件或者 URL 
		if($fp){
			$fields = array('no','name','sex');
			// dump($fields);
			// exit;
			$model = M('student');

			//第一 找到数据表中学号存放到数组中
			$arrNo = $model->getField('no',true);

			$arr = array();

			//fgetcsv — 从文件指针中读入一行并解析 CSV 字段 
			while (($row = fgetcsv($fp,1000,","))!==false) {

				//array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
				$row = array_combine($fields,$row);
				// dump($row);
				// exit;

				$row['py'] = SpGetPinyin($row['name']);  //导入的文件加入拼音调用拼音方法

				if(in_array($row['no'], $arrNo)){
					$file = './Public/Download/demo.txt';
					
					$current .= $row['no'] . '存在' . '<br>';

					file_put_contents($file, $current);
					
				}else{
					$arrNo[] = $row['no'];
					$arr[] = $row;
					$file = './Public/Download/demo.txt';
					$current1 .= $row['no'] . '导入成功' . '<br>';
					file_put_contents($file, $current1);
				}
				if(count($arr) == 1000){
					$model->addAll($arr);
					unset($arr); //unset() 销毁指定的变量
				}	
			}

			if(count($arr)>0){
				$model->addAll($arr);
			}	
			// $this->show('添加成功','utf8');
			$this->success('添加成功','index');

		}
		
	}
//将文件保存到数据表中  显示到页面中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值