博客列表 >1209_文件上传小案例 第31课

1209_文件上传小案例 第31课

叮叮当当
叮叮当当原创
2019年12月16日 22:18:26697浏览

1 写一个文件操作案例

前端页面:index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>文件操作</title>
  6. </head>
  7. <body>
  8. <h2>文件上传</h2>
  9. <form action="file.php" method="post" enctype="multipart/form-data">
  10. <!--name:最终会成为php中$_FILES['my_file']-->
  11. <input type="file" name="my_file">
  12. <!--人为设置上传文件大小-->
  13. <input type="hidden" name="max_file_size" value="2097152">
  14. <button>上传</button>
  15. </form>
  16. </body>
  17. </html>

后端处理:file.php

  1. # 前端文件大小设置
  2. if( !empty($_POST['max_file_size']) ){
  3. $fileSize0 = intval($_POST['max_file_size']);
  4. }
  5. else{
  6. $fileSize0 = 0;
  7. }
  8. # 1 配置上传参数
  9. $fileType = ['jpg', 'png', 'gif']; # 文件类型限制
  10. $fileSize = 1048576; # 后端文件大小限制
  11. $filePath = '/uploads/'; #文件上传目录
  12. $fileName = $_FILES['my_file']['name']; # 原始文件名
  13. $tempFile= $_FILES['my_file']['tmp_name']; # 临时文件名
  14. # 2 判断是否上传成功,大于0说明有错误
  15. $uploadError = $_FILES['my_file']['error'];
  16. # 人为设置文件大小错误 ,
  17. # 对于$uploadError,1是超过php上传文件大小,2是超过表单上传文件大小,默认一般不超,除非先将这些设置改小
  18. # 先判断前端大小是否超,再判断后端
  19. if( $fileSize0 && $_FILES['my_file']['size'] > $fileSize0 ) $uploadError = 2;
  20. elseif( $_FILES['my_file']['size'] > $fileSize ) $uploadError = 1;
  21. if( $uploadError > 0 ){
  22. switch( $uploadError ){
  23. case 1: die('上传文件过大,超过php上传文件大小');
  24. case 2: die('上传文件过大,超过表单上传文件大小');
  25. case 3: die('文件上传不完整');
  26. case 4: die('请选择上传文件');
  27. default: die('未知错误');
  28. }
  29. }
  30. # 3 判断文件扩展名是否支持
  31. $extension = explode('.', $fileName)[1];
  32. if( !in_array($extension, $fileType) ){
  33. die( '<script>alert("'.$extension.'文件类型不支持上传");location.assign("index.html")</script>' );
  34. }
  35. # 4 生成不可重复的临时文件名
  36. $fileName = date( 'YmdHis', time() ) . md5( mt_rand(1,99) ) . '.' . $extension;
  37. # 5 文件上传
  38. if( is_uploaded_file($tempFile) ){
  39. # 将文件移到指定上传目录
  40. if( move_uploaded_file($tempFile, __DIR__ . $filePath . $fileName) ){
  41. echo "上传成功";
  42. }
  43. else{
  44. die('上传目录是否存在 / 上传目录是否够权限');
  45. }
  46. }
  47. else{
  48. die('非法操作');
  49. }
  50. exit;

运行

示例1

示例2

示例3

示例4

示例5

小结:

1)设置文件类型限制,php端文件大小限制,文件目录,
2)获取数据,两个参数,一个表单端文件大小限制,一个 $_FILES[‘my_file’]
3)判断error: 是否没传文件, 是否文件过大, 是否类型错误
4)根据文件原名生成临时文件名, 即存在上传目录里的文件名
5)将文件移动到指定上传目录,若目录不存在或权限不够,会移动失败

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议