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. }

更多相关文章

  1. 文件上传的实例
  2. PHP文件上传的各种处理
  3. 0820作业
  4. 命名空间自动加载进阶与mysql初体验
  5. PHP-02外部文件引入require与数组遍历
  6. oracle数据库无法打开修复过程
  7. 关于PHP递归函数以及处理多维数组和目录文件实例
  8. 完成一个用户注册页面, 用xmind文件中总结的字符串函数库,对表单
  9. gitignore的一些语法

随机推荐

  1. 一个查看xhprof数据文件的docker镜像
  2. 教你用php读写csv格式的文件
  3. 详解PHP位运算符
  4. 初学php,你遇到过这个低级问题吗?
  5. 一个php框架的简单实现,仅实现简单路由层
  6. 关于PHP打印格式化显示利器
  7. PHP常见数组排序方法小汇总
  8. php实现断点续传大文件
  9. 数组转json后的结果是数组还是对象? (踩坑
  10. 中文分词 PHP 扩展 SCWS 安装方法