thinkphp5上传文件

文章描述:

thinkphp5上传exl文件,并且把exl数据导入到数据库中

form表单

使用submit按钮提交表单

<form action="{:url('import/exl', '', '')}" method="post" enctype="multipart/form-data">
     <table>
	 <tr>
	     <td><input type="file" name="file" id="file" class="file-ui" /></td>
	 </tr>
	 <tr>
	     <td>
	         <button type="submit" class="ui-button ui-button-success add edit">导入</button>
	     </td>
         </tr>
     </table>
</form>

ajax异步上传

<button type="button" class="ui-button ui-button-success add edit import_exl_button">导入</button>
$('.import_exl_button').on('click',function(){
	var formData = new FormData();
	if(!$('#file')[0].files[0]){
		swal("OMG!", "请选择上传文件", "error")
		return false
	}
   formData.append('file', $('#file')[0].files[0]);
   //添加图片信息的参数
   $.ajax( {
      url: "{:url('import/exl', '', '')}",
         type: 'POST',
         dataType: "json",
         async: false,
         cache: false,
         data: formData,
         processData: false,
         contentType: false,
         success: function(data) {
			if(data.code==200){
				swal("Good!", data.msg, "success");
				setTimeout(function(){
					location.reload();
				},3000)
			}
         },
         error: function(data) {

         }
   })
})

 

php

上传

// 上传
    public function upload(){
        $ROOT_PATH =  Env::get('root_path');
        # 允许通过的文件名后缀
        $allow_extexsion = [
            'xls', 'xlsx'
        ];

        if($_FILES["file"]["error"])
        {
            echo $_FILES["file"]["erroe"];
        }
        else
        {
            $extension=strtolower(pathinfo($_FILES["file"]["name"],PATHINFO_EXTENSION));//获取文件后缀
            //控制上传的文件类型,大小
            if(in_array($extension, $allow_extexsion))
            {
                // 注意更改接收字段
                $file =request()->file('file');
                // 移动到框架应用根目录/public/uploads/ 目录下
                $info = $file->move($ROOT_PATH . 'public/uploads');
                if($info){
                    $filename = $ROOT_PATH . 'public/uploads/' . $info->getSaveName();
                }else{
                    // 上传失败获取错误信息
                    echo $file->getError();
                }
                return $filename;
            }
            else
            {
                return (['code' => 101, 'msg' => '文件格式不正确']);
            }
        }
    }

导入

// 导入exl
    public function exl(){
		
        // 获取上传地址
        $filename = $this->upload();

        // 获取文件后缀
        $file_extension = pathinfo($filename, PATHINFO_EXTENSION);

        //获取文件所在目录名
        $new_path = $filename;

        $objPHPExcel = new \PHPExcel();
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); //设置保存版本格式

        //实例化PHPExcel类
        if ($file_extension == 'xlsx'){
            $objReader=new \PHPExcel_Reader_Excel2007();
        } else if ($file_extension == 'xls') {
            $objReader = new \PHPExcel_Writer_Excel5();
        }

        $objPHPExcel = $objReader->load($new_path,$encode='utf-8');//获取excel文件
        $sheet = $objPHPExcel->getSheet(0); //激活当前的表

        $highestRow = $sheet->getHighestRow(); // 取得总行数
        $highestColumn = $sheet->getHighestColumn(); // 取得总列数
        $a = 0;

        //将表格里面的数据循环到数组中
        for($i=2;$i<=$highestRow;$i++)
        {
            //*为什么$i=2? (因为Excel表格第一行应该是标题,从第二行开始,才是我们要的数据。)
            $data[$a]['themea'] = $objPHPExcel->getActiveSheet()->getCell("A".$i)->getValue();//
            $data[$a]['themeb'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();//
            $data[$a]['themec'] = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();//
            $data[$a]['username'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();// 姓名
//            $data[$a]['validity'] = gmdate("Y-m-d H:i:s", \PHPExcel_Shared_Date::ExcelToPHP($objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue()));//有效期
            $a++;

        }
        //往数据库添加数据
        if(!empty($data)){
            $res = Db::name('qd_user')->insertAll($data);
            //echo Db::getLastSql();
            if($res){
                // echo $a.'条数据';
				$url = '/admin.php/index/index';
				exit( json_encode(['code'=>200, 'msg'=>'导入成功', 'url'=>$url]) );
            }
        }
    }

 

发布时间:2022/12/06

发表评论