ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP、uploadify、upload、PHPExcel を使用して、更新せずにデータをインポートする方法

ThinkPHP、uploadify、upload、PHPExcel を使用して、更新せずにデータをインポートする方法

一个新手
一个新手オリジナル
2017-09-12 10:21:041426ブラウズ

フロントエンドHTML+JQuery 注: Jqueryはバージョン1.xが必要で、バージョン2.xは使用できません

1.必要なファイルを導入し、入力をアップロード


  <load file="__PUBLIC__/js/jquery-1.11.3.min.js" />
  <load file="__PUBLIC__/uploadify/jquery.uploadify.min.js" />
  <load file="__PUBLIC__/uploadify/uploadify.css" />


<input type="file" class="" id="student" name="student">

2.アップロード操作


 <script>
  $(function(){    //ThinkPHP上传地址
    var upload = "{:U(MODULE_NAME.&#39;/Student/upload&#39;)}";    //ThinkPHP sessionID的提交变量
    //&#39;VAR_SESSION_ID&#39;=>&#39;session_id&#39;,在ThinkPHP/Conf/convention.php中进行配置,默认关闭的需要开启
    var sid = &#39;{:session_id()}&#39;;    //导入数据地址
    var daoruUrl = "{:U(MODULE_NAME.&#39;/Student/daoruHandle&#39;)}"    //Amaze ui 模态框
    var modal = $(&#39;#my-modal-loading&#39;);    //uploadify使用方法
    $(&#39;#student&#39;).uploadify({      &#39;swf&#39;      : &#39;__PUBLIC__/uploadify/uploadify.swf&#39;,      &#39;uploader&#39; : upload,      &#39;buttonText&#39; : &#39;选择文件...&#39;,      &#39;width&#39;:120,      &#39;height&#39;:30,      &#39;formData&#39;:{&#39;session_id&#39;:sid},      &#39;fileTypeExts&#39;:&#39;*.xls&#39;,      //开始上传弹出模态框
      &#39;onUploadStart&#39; : function(file) {
        $(&#39;#alert-content&#39;).html(&#39;正在上传文件&#39;);
          modal.modal();
        },      //上传成功关闭模态框,并用后台函数导入数据
      &#39;onUploadSuccess&#39;:function(file, data, response){
        $(&#39;#alert-content&#39;).html(&#39;正在导入数据&#39;);
        data = eval("("+data+")");
        $.ajax({
          type: &#39;POST&#39;,
          url: daoruUrl,
          data: {&#39;file&#39;:data.file},
          success: function(retdata){
            modal.modal(&#39;close&#39;);            if(retdata==1){
              alert(&#39;导入成功&#39;);
            }else{
              alert(&#39;导入失败&#39;);
            }
          },
          dataType: &#39;json&#39;
        });
      }
    });
  });  </script>

3. ThinkPHP コントローラーのアップロード操作: Upload.class.php スペースを導入する必要があることに注意してください


    function upload(){        $config = array(            &#39;maxSize&#39;    =>    3145728,
            &#39;rootPath&#39;   =>    &#39;./Uploads/&#39;,
            &#39;savePath&#39;   =>    &#39;&#39;,
            &#39;saveName&#39;   =>    array(&#39;uniqid&#39;,&#39;&#39;),
            &#39;exts&#39;       =>    array(&#39;xls&#39;),
            &#39;autoSub&#39;    =>    true,
            &#39;subName&#39;    =>    array(&#39;date&#39;,&#39;Ymd&#39;),
            );        $upload = new Upload($config);        // 上传文件 
        $info   =   $upload->upload();        if(!$info) {// 上传错误提示错误信息
            $this->error($upload->getError());
        }else{// 上传成功 获取上传文件信息           
            $file = $info[&#39;Filedata&#39;][&#39;savepath&#39;].$info[&#39;Filedata&#39;][&#39;savename&#39;];
        }        //p($info);
        $data = array(            &#39;file&#39;=>&#39;./Uploads/&#39;.$file,
            );        echo json_encode($data);
    }

4. PHPExcel は Excel ファイルを読み取り、戻ります。データ関数


//导入数据处理
    function daoruHandle(){        $file = I(&#39;file&#39;);        $excelData = excel_to_mysql($file);        foreach($excelData[&#39;data&#39;] as $row){            $data = array(                &#39;xuehao&#39;=>$row[&#39;xuehao&#39;],
                &#39;xingming&#39;=>$row[&#39;xingming&#39;],
                &#39;xingbie&#39;=>($row[&#39;xingbie&#39;]==&#39;男&#39;)?1:0,
                &#39;mima&#39;=>md5($row[&#39;mima&#39;]),
                );
            M(&#39;student&#39;)->add($data);
        }        echo 1;
    }

以上がThinkPHP、uploadify、upload、PHPExcel を使用して、更新せずにデータをインポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。