博主信息
博文 34
粉丝 0
评论 0
访问量 26282
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php灭绝手把手教你玩文件上传
小庄
原创
691人浏览过

php灭绝手把手教你玩文件上传

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>文件上传</title>
  8. </head>
  9. <body>
  10. <form action="upload2.php" method="post" enctype="multipart/form-data">
  11. <fieldset>
  12. <legend>
  13. 单文件上传
  14. </legend>
  15. <label for="my_file"></label>
  16. <input type="file" name="my_file" id="my_file">
  17. <button>上传</button>
  18. </fieldset>
  19. </form>
  20. </body>
  21. </html>
  1. <?php
  2. echo '<pre>';
  3. var_dump(uploadFile($_FILES['my_file']));
  4. function uploadFile($fileInfo,$uploadPath='./uploads',$flag=true,$allowExt=['jpg','png','wbmp','gif','jpeg','bmp'],$maxSize=2097152){
  5. if($fileInfo['error'] == 0){
  6. $arr = explode('.',$fileInfo['name']);//explode 分割字符串,以(.)点,分割
  7. // var_dump($arr);
  8. $ext = end($arr); //取后缀
  9. $prefix = array_shift($arr); //取文件名
  10. if(!in_array($ext,$allowExt)){//判断后缀是否存在
  11. return $res = '文件类型不合法';
  12. }
  13. if($fileInfo['size'] > $maxSize){ //判断文件大小
  14. return $res = '文件大小超过限制的最大值';
  15. }
  16. if(!getimageSize($fileInfo['tmp_name'])){//检测图片是否合法
  17. return $res = '不是真实图片';
  18. }
  19. if(!is_uploaded_file($fileInfo['tmp_name'])){//检测上传方式是否为http post
  20. return $res = '上传方式错误:请使用http post 方式上传';
  21. }
  22. // $uploadPath = 'uploads/'; //存储文件目录
  23. if(!file_exists($uploadPath)){ //file_exists判断目录是否存在
  24. mkdir($uploadPath,0770,true); //mkdir创建目录,参数0770为权限
  25. chmod($uploadPath,0770); //为以防万一,再次修改权限为0770
  26. }
  27. // move_uploaded_file,copy 函数都可以移动文件
  28. // echo $prefix.time(); //调试用
  29. $des = $uploadPath.'/'.md5($prefix.time()).'.'.$ext; //将散列后的文件名,与后缀拼接。($prefix.time()拼接为原文件名+时间戳,md5 在将其散列形成独一无二的文件名,避免用户上传相同文件名的文件导致出现问题)
  30. // echo $des;//调试用
  31. $moveResult = move_uploaded_file($fileInfo['tmp_name'],$des);//参数:将$fileInfo['tmp_name']临时文件,复制到$des,
  32. if(!$moveResult){
  33. $res['error'] = '文件移动失败';
  34. }else{
  35. $res['info'] = $fileInfo['name'] . '上传成功';
  36. $res['fileRealPath'] = $des;
  37. }
  38. return $res;
  39. }else{
  40. switch($fileInfo['error']):
  41. case 1:
  42. echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  43. break;
  44. case 2:
  45. echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
  46. break;
  47. case 3:
  48. echo '文件只有部分被上传';
  49. break;
  50. case 4:
  51. echo '没有文件被上传。 是指表单的file域没有内容,是空字符串';
  52. break;
  53. case 6:
  54. echo '找不到临时文件夹';
  55. break;
  56. default:
  57. echo '系统错误';
  58. endswitch;
  59. }
  60. }
批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学