文件导入下载

<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                  <div class="modal-dialog">
                    <div class="modal-content">
                      <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true"> &times; </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();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值