博客列表 >自动加载文件、文件上传操作

自动加载文件、文件上传操作

乐作人生
乐作人生原创
2020年11月03日 15:53:53806浏览

1. 自动加载文件

  • loader文件
    1. try{// 在try代码块内触发异常
    2. // spl_autoload_register()通过回调自动加载外部文件
    3. spl_autoload_register(function ($class){
    4. // 把$class中的\替换成系统分隔符
    5. $path=str_replace('\\', DIRECTORY_SEPARATOR, $class);
    6. // DIRECTORY_SEPARATOR是一个显示系统分隔符的常量
    7. $file=__DIR__. DIRECTORY_SEPARATOR .$path .'.php';
    8. // is_file() 检查指定的文件是否是常规的文件;file_exists() 检查文件或目录是否存在
    9. if(!(is_file($file) && file_exists($file)))
    10. // 抛出异常
    11. throw new Exception ('不是文件名或文件不存在');
    12. // 文件存在即引入
    13. require $file;
    14. });
    15. }catch(Exception $e){// 捕获异常
    16. die($e->getMessage());
    17. }
    1. // 自动加载外部文件类
    2. require __DIR__ .'/loader.php';// 引入loader文件
    3. use inc\lib\Test1;// 类的别名与原始别名相同时,可以省去
    4. use inc\lib\Test2 as Te;
    5. echo Test1::$site, '<br>';
    6. echo Te::$site, '<br>';

2. 单文件, 多文件上传

  • 单文件
    1. <?php
    2. printf('<pre>%s</pre>',print_r($_FILES, true));
    3. echo '<hr>';
    4. //printf()输出格式化的字符串
    5. // print_r()用于打印变量;第2个参数为true则不输出结果,将结果赋值给一个变量,false则直接输出结果
    6. // $_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。如果为单个文件上传,那么 $_FILES 为二维数组;如果为多个文件上传,那么 $_FILES 为三维数组
    7. // 一、
    8. // 步骤1.获取错误代码
    9. // $error=$_FILES['pic']['error'] ?? null;
    10. // // 步骤2.判断错误代码
    11. // if($error===0) echo '文件上传成功<hr>';
    12. // elseif($error===1) echo '超过了php.ini中的大小<hr>';
    13. // elseif($error===2) echo '超过了上传表单中的MAX_FILE_SIZE值的大小<hr>';
    14. // elseif($error===4) echo '文件上传失败<hr>';
    15. // 二、
    16. // 1.获临时文件类型
    17. // $type = $_FILES['my_pic']['type'];
    18. // // strstr() 函数搜索字符串在另一字符串中的第一次出现
    19. // if (strstr($type, '/', true) !== 'image') echo '文件类型正确<hr>';// 搜索/在$type中第一次出现之前的字符串部分
    20. // 三、
    21. // 1.获取临时文件名
    22. // $tmp=$_FILES['pic']['tmp_name'];
    23. // // 2. is_uploaded_file()判断 文件是否是通过POST上传的?
    24. // if (is_uploaded_file($tmp)) echo '上传文件安全<hr>';
    25. // else echo '非POST<hr>';
    26. // 四、图片上传
    27. // 1.获取临时文件名
    28. $tmpFile=$_FILES['pic']['tmp_name'];
    29. // uploads/ :用户自定义目录,文件存放处
    30. // echo strstr($_FILES['pic']['name'], '.');// 获取文件后缀.jpg
    31. // 获取最终文件名,用md5对原始文件名进行加密
    32. // echo md5($_FILES['pic']['name']).'<hr>';
    33. // echo $_FILES['pic']['name'].'<hr>';
    34. // echo strstr($_FILES['pic']['name'], '.').'<hr>';
    35. $destFileName = './uploads/' .md5($_FILES['pic']['name']).strstr($_FILES['pic']['name'], '.');
    36. // echo $destFileName.'<hr>';
    37. // move_uploaded_file(临时文件名,正式路径)
    38. if (move_uploaded_file($tmpFile, $destFileName)){
    39. echo '<img src="'. $destFileName .'" width="200px;">';// 对图片进行预览
    40. echo '<p>上传成功了</p>';
    41. }
    42. ?>
    43. <!DOCTYPE html>
    44. <html lang="en">
    45. <head>
    46. <meta charset="UTF-8">
    47. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    48. <title>单文件上传</title>
    49. </head>
    50. <body>
    51. <!-- 文件上传必须满足2个条件:1、method:post;2、enctype: multipart/form-data -->
    52. <form action="" method="post" enctype="multipart/form-data">
    53. <fieldset><!-- 对表单中的相关元素进行分组 -->
    54. <legend>文件上传</legend>
    55. <!-- 设置允许上传的文件大小, 这个隐藏域必须写到input:file -->
    56. <!-- <input type="hidden" name="MAX_FILE_SIZE" value="5000"/> -->
    57. <input type="file" name="pic" id=""/>
    58. <button>上传</button>
    59. </fieldset>
    60. </form>
    61. </body>
    62. </html>
  • 多文件
    1. <?php
    2. printf('<pre>%s</pre>',print_r($_FILES, true));
    3. // 将文件从临时目录中移动到正式的目录中
    4. // move_uploaded_file(临时文件, 正式路径)
    5. // 1.获临时文件名
    6. // $tmpFile = $_FILES['my_pic']['tmp_name'];
    7. // 最终文件名
    8. // echo strstr($_FILES['my_pic']['name'], '.');
    9. foreach ($_FILES as $file) {
    10. if ($file['error'] === 0) {
    11. $destFileName = './uploads/' . md5($file['name']). strstr($file['name'], '.');
    12. if (move_uploaded_file($file['tmp_name'], $destFileName)){
    13. echo '<p>上传成功了</p>';
    14. echo '<img src="'. $destFileName .'" width="200">';
    15. }
    16. }
    17. }
    18. // die;
    19. ?>
    20. <!DOCTYPE html>
    21. <html lang="en">
    22. <head>
    23. <meta charset="UTF-8">
    24. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    25. <title>多文件上传</title>
    26. </head>
    27. <body>
    28. <form action="" method="post" enctype="multipart/form-data">
    29. <fieldset>
    30. <legend>单文件上传</legend>
    31. <input type="file" name="my_pic1" id="">
    32. <input type="file" name="my_pic2" id="">
    33. <input type="file" name="my_pic3" id="">
    34. <button>上传</button>
    35. </fieldset>
    36. </form>
    37. </body>
    38. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议