Layui+PHP 文件上传

1 篇文章 0 订阅

1.页面:

<div class="layui-form-item" style="margin-left: 50px;">
                  <input type="hidden" id="subjectFile" name="subject_file" value="" />
                  <button type="button" class="layui-btn layui-btn-normal " id="uploadFile"><i class="layui-icon">&#xe67c;</i>上传报告</button>
                  <span id="subject_file_remark" style="margin-left: 20px"></span>
                </div>

2.jq

//上传文件
  var uploadInst = upload.render({
    elem: '#uploadFile' //绑定元素
    ,url: '/operator/file/upload/file' //上传接口
    // ,auto: false
    ,headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
    ,accept: 'file'
    // ,bindAction: '#test9'
    ,before: function(obj) {
      this.item.siblings('#subject_file_remark').html('上传中');
      $('#subjectFile').val('');
    }
    ,done: function(res){
      if (res.code == 0)
      {
        var file_name = res.file_name;
        var url = res.url;
        $('#subjectFile').val(res.url);
        $('#subject_file_remark').html('上传成功<a href="' + url + '" target="_blank"> &nbsp;' + file_name + '</a>');
      }
      //上传完毕回调
    }
    ,error: function(){
      //请求异常回调
      $('#subject_file_remark').html('上传失败');
    }
  });

3.控制器方法:

public function postDoc(Request $request)
    {
        $data      = $request->all();
        $validator = Validator::make($data, [
            'file' => 'required|file',
        ]);

        if ($validator->fails()) {
            $errors = $validator->errors();
            return $this->responseJSON($errors->all(), 1, 'bad request.');
        }
        
        $file = $request->file('file');
        if ($file->isValid()){
            $dir = 'files';
            $originalName = $file->getClientOriginalName(); //源文件名
            $ext = $file->getClientOriginalExtension();    //文件拓展名
            $type = $file->getClientMimeType(); //文件类型
            $realPath = $file->getRealPath();
            $disk = Storage::disk('public');
            $path = '/'.$dir.'/'.$ext;
            $disk->makeDirectory($dir);
            $file_name = date('YmdHis-').''.$originalName;
            $path = $disk->putFileAs($dir,$file,$file_name);
            return $this->responseJSON(['url' => '/storage'.'/'.$path,
                'file_name' => $file_name,
            ], 0, 'ok');
        
        }else {
            return $this->responseJSON([], 2, '文件无效');
        }
    }
    ~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 layui 表格导入和导出 Excel 的后端代码可以参考以下示例: 导出 Excel: ```php <?php //连接数据库 $conn = mysqli_connect("localhost","root","","test"); //查询数据 $sql = "SELECT * FROM users"; $result = mysqli_query($conn, $sql); //引入PHPExcel库 require_once './PHPExcel/PHPExcel.php'; //创建PHPExcel对象 $objPHPExcel = new PHPExcel(); //设置表头 $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'ID'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1', '姓名'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1', '年龄'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D1', '性别'); //循环输出数据 $i = 2; while ($row = mysqli_fetch_array($result)) { $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A' . $i, $row['id']); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('B' . $i, $row['name']); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('C' . $i, $row['age']); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('D' . $i, $row['sex']); $i++; } //设置文件名和下载方式 $filename = '用户信息.xlsx'; header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $filename . '"'); header('Cache-Control: max-age=0'); //输出Excel文件 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); //关闭连接 mysqli_close($conn); ?> ``` 导入 Excel: ```php <?php //连接数据库 $conn = mysqli_connect("localhost","root","","test"); //引入PHPExcel库 require_once './PHPExcel/PHPExcel.php'; //获取上传的Excel文件 $file = $_FILES['file']['tmp_name']; //创建PHPExcel对象 $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objPHPExcel = $objReader->load($file); //获取当前工作表 $sheet = $objPHPExcel->getSheet(0); //获取最大行数和列数 $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); //循环读取数据 for ($i = 2; $i <= $highestRow; $i++) { $rowData = $sheet->rangeToArray('A' . $i . ':' . $highestColumn . $i, NULL, TRUE, FALSE); //插入数据到数据库 $sql = "INSERT INTO users (name, age, sex) VALUES ( '" . $rowData[0][1] . "', '" . $rowData[0][2] . "', '" . $rowData[0][3] . "' )"; mysqli_query($conn, $sql); } //关闭连接 mysqli_close($conn); //跳转到列表页面 header("Location: list.php"); ?> ``` 注意:上述代码中,需根据实际情况修改数据库连接信息、Excel 文件路径和表格列名等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值