Blogger Information
Blog 87
fans 1
comment 0
visits 59162
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
文件上传 、分页学习
阿杰
Original
475 people have browsed it

一、文件上传

1、单文件上传

  1. <form action="" method="POST" enctype="multipart/form-data">
  2. <fieldset>
  3. <legend>单文件上传</legend>
  4. <!-- 浏览器中限制上传文件的大小,写到一个隐藏域中,并写到type=file之前 -->
  5. <input type="hidden" name="MAX_FILE_SIZE" value="300000">
  6. <input type="file" name="my_pic">
  7. <button>上传</button>
  8. </fieldset>
  9. </form>
  1. <?php
  2. // $_FILES: PHP超全局变量数量,保存着上传文件的全部信息
  3. printf('<pre>%s</pre>',print_r($_FILES,true));
  4. /**
  5. * 1. $_FILES:二维数组,每个元素对应一个上传的文件
  6. * 2. name: 原始文件名
  7. * 3. type: 文件类型,mime类型
  8. * 4. tmp_name: 临时目录
  9. * 5. error: 错误代码
  10. * 6. size: 文件大小(字节表示 byte)
  11. */
  12. if(isset($_FILES['my_pic'])){
  13. $name = $_FILES['my_pic']['name'];
  14. $tmpName = $_FILES['my_pic']['tmp_name'];
  15. $error = $_FILES['my_pic']['error'];
  16. if($error > 0){
  17. $tips = '<span style="color:red;">上传失败:</span>';
  18. switch($error){
  19. case 1:
  20. $tips .= '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  21. break;
  22. case 2:
  23. $tips .= '文件大小超过了上传表单中MAX_FILE_SIZE最大值';
  24. break;
  25. case 3:
  26. $tips .= '文件只有部分被上传';
  27. break;
  28. case 4:
  29. $tips .= '没有文件被上传';
  30. break;
  31. case 6:
  32. $tips .= '找不到临时目录';
  33. break;
  34. case 7:
  35. $tips .= '文件写入失败,请检查目录权限';
  36. break;
  37. }
  38. echo "<p>$tips</p>";
  39. }else{
  40. // 判断用户是不是通过合法的POST方式上传
  41. if(is_uploaded_file($tmpName)){
  42. // 设置允许上传文件类型的白名单
  43. $allow = ['jpg','jpeg','png','gif'];
  44. // 获取文件扩展名
  45. $ext = pathinfo($name)['extension'];
  46. if(in_array($ext,$allow)){
  47. // 两个条件都满足了
  48. // 1、post方式上传的 2、文件类型是合法的
  49. // 目标目录
  50. $path = 'uploads/';
  51. // 自定义目标文件名
  52. $dest = $path.md5($name).'.'.$ext;
  53. // 将文件从临时目录中移动到目标目录中并重命名
  54. if(move_uploaded_file($tmpName,$dest)){
  55. echo '<p style="color:green">上传成功</p>';
  56. // 预览
  57. echo "<img src='$dest' width='200' >";
  58. }else{
  59. echo '<p style="color:red">移动失败</p>';
  60. }
  61. }else{
  62. echo '<p style="color:red">文件类型错误</p>';
  63. }
  64. }else{
  65. echo '<p style="color:red">非法方式上传</p>';
  66. }
  67. }
  68. }
  69. ?>

2、多文件上传

  1. <form action="" method="POST" enctype="multipart/form-data">
  2. <fieldset>
  3. <legend>多文件上传:批量上传</legend>
  4. <!-- multiple:允许同时选择多个 -->
  5. <input type="file" name="my_pic[]" multiple>
  6. <button>上传</button>
  7. </fieldset>
  8. </form>
  1. <?php
  2. // $_FILES: PHP超全局变量数量, 保存着上传文件的全部信息
  3. printf('<pre>%s</pre>',print_r($_FILES,true));
  4. if(isset($_FILES['my_pic'])){
  5. // 这时值需要遍历$_FILES['my_pic']['error']这个数组
  6. foreach($_FILES['my_pic']['error'] as $key=>$error){
  7. if($error === 0){
  8. // 临时文件名
  9. $tmpName = $_FILES['my_pic']['tmp_name'][$key];
  10. // 原始文件名
  11. $name = $_FILES['my_pic']['name'][$key];
  12. // 目标文件名
  13. $destFile = 'uploads/0627/'.$name;
  14. move_uploaded_file($tmpName,$destFile);
  15. }
  16. }
  17. }
  18. ?>

二、分页

数据表如下:

分页参数:当前页数、偏移量、每页数量、总数、总页数

  1. <?php
  2. // 1.连接数据库
  3. $db = new PDO('mysql:dbname=mydb','myshop','yzj123');
  4. // 2.当前页,再GET参数中
  5. $page = $_GET['p'] ?? 1;
  6. echo "当前页:p= $page<hr>";
  7. // 3. 每页显示数量
  8. $num = 5;
  9. // 4. 记录总数
  10. $sql = 'SELECT COUNT(`ps_id`) AS `total` FROM `sp_permission`';
  11. $stmt = $db->prepare($sql);
  12. $stmt->execute();
  13. // 将某列的值与php变量绑定,`total` => $total
  14. $stmt->bindColumn('total',$total);
  15. $stmt->fetch(PDO::FETCH_ASSOC);
  16. echo "总记录数量:$total<hr>";
  17. // 5. 总页数
  18. // 10.1 => 11 ceil: 向上取整,不丢失数据
  19. $pages = ceil($total/$num);
  20. echo "总页数: $pages<hr>";
  21. // 6. 偏移量
  22. // offset = (page-1)*num
  23. $offset = ($page-1)*$num;
  24. echo "偏移量:$offset<hr>";
  25. // 7. 分页数据
  26. $sql = "SELECT * FROM `sp_permission` LIMIT $offset,$num";
  27. $stmt = $db->prepare($sql);
  28. $stmt->execute();
  29. $staffs = $stmt->fetchAll(PDO::FETCH_ASSOC);
  30. // 遍历
  31. if(count($staffs) === 0){
  32. echo '查询结果为空';
  33. }else{
  34. foreach($staffs as $staff){
  35. // 提取参数
  36. extract($staff);
  37. printf('%d-%s-%s-%s<br>',$ps_id,$ps_name,$ps_c,$ps_a);
  38. }
  39. }
  1. <body>
  2. <table>
  3. <caption>角色列表</caption>
  4. <thead>
  5. <tr>ID</tr>
  6. <tr>名称</tr>
  7. <tr>ps_c</tr>
  8. <tr>ps_a</tr>
  9. </thead>
  10. <tbody>
  11. <?php foreach ($staffs as $staff) : extract($staff) ?>
  12. <tr>
  13. <td><?= $ps_id ?></td>
  14. <td><?= $ps_name ?></td>
  15. <td><?= $ps_c ?></td>
  16. <td><?= $ps_a ?></td>
  17. </tr>
  18. <?php endforeach ?>
  19. </tbody>
  20. </table>
  21. <p>
  22. <?php for($i=1;$i<=$pages;$i++): ?>
  23. <?php
  24. $url = $_SERVER['PHP_SELF'].'?p='.$i;
  25. $active = $i==$_GET['p'] ? 'active' : null;
  26. ?>
  27. <a href="<?= $url ?>" class="<?= $active ?>">
  28. <?= $i ?>
  29. </a>
  30. <?php endfor ?>
  31. </p>
  32. </body>

Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post