当前位置 : 主页 > 编程语言 > 其它开发 >

PHP文件上传函数封装

来源:互联网 收集:自由互联 发布时间:2021-08-24
PHP文件上传函数封装 ?php function uploadFile( $fileInfo, $uploadPath = './attachment', $flag = true, $allowExt = ['jpg', 'png', 'wbmp', 'gif', 'jpeg', 'bmp'], $maxSize = 2097152 ) { if ( $fileInfo['error'] == 0 ) { $arr = explode( '

PHP文件上传函数封装


  1. <?php
  2. function uploadFile( $fileInfo, $uploadPath = './attachment', $flag = true, $allowExt = ['jpg', 'png', 'wbmp', 'gif', 'jpeg', 'bmp'], $maxSize = 2097152 ) {
  3. if ( $fileInfo['error'] == 0 ) {
  4. $arr = explode( '.', $fileInfo['name'] );
  5. //explode 分割字符串,以.点分割
  6. $ext = end( $arr );
  7. //取后缀名
  8. $prefix = array_shift( $arr );
  9. //取文件名
  10. if ( !in_array( $ext, $allowExt ) ) {
  11. //判断后缀是否存在
  12. return $res = '文件类型不合法';
  13. }
  14. if ( $fileInfo['size'] > $maxSize ) {
  15. //判断文件大小
  16. return $res = '文件大小超过限制的最大值';
  17. }
  18. if ( !getimageSize( $fileInfo['tmp_name'] ) ) {
  19. //检测图片是否合法
  20. return $res = '请勿上传非法图片';
  21. }
  22. if ( !is_uploaded_file( $fileInfo['tmp_name'] ) ) {
  23. //检测上传方式是否为http post
  24. return $res = '上传方式错误:请使用http post 方式上传';
  25. }
  26. //定义存储文件目录, 按年月规类存放
  27. $uploadPath = $uploadPath . '/' . date( 'Y' ) . '/' . date( 'm' ) ;
  28. if ( !file_exists( $uploadPath ) ) {
  29. //file_exists判断目录是否存在
  30. mkdir( $uploadPath, 0770, true );
  31. //mkdir创建目录,参数0770为权限
  32. chmod( $uploadPath, 0770 );
  33. //为以防万一,再次修改权限为0770
  34. }
  35.  
  36. $des = $uploadPath . '/'.md5( $prefix.time() ).'.'.$ext;
  37. //将散列后的文件名,与后缀拼接。( $prefix.time()拼接为原文件名+时间戳,md5 在将其散列形成独一无二的文件名,避免用户上传相同文件名的文件导致出现问题 )
  38. // echo $des;
  39. //调试用
  40. $moveResult = move_uploaded_file( $fileInfo['tmp_name'], $des );
  41. //参数:将$fileInfo['tmp_name']临时文件,复制到$des,
  42. if ( !$moveResult ) {
  43. $res['error'] = '文件移动失败';
  44. } else {
  45. $res['info'] = $fileInfo['name'] . '上传成功';
  46. $res['fileRealPath'] = $des;
  47. }
  48. return $res;
  49. } else {
  50. switch( $fileInfo['error'] ):
  51. case 1:
  52. echo '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
  53. break;
  54. case 2:
  55. echo '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
  56. break;
  57. case 3:
  58. echo '文件只有部分被上传';
  59. break;
  60. case 4:
  61. echo '没有文件被上传。 是指表单的file域没有内容,是空字符串';
  62. break;
  63. case 6:
  64. echo '找不到临时文件夹';
  65. break;
  66. default:
  67. echo '系统错误';
  68. endswitch;
  69. }
  70. }

上传表单


  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
  11. action="uploadhttp://img.558idc.com/uploadfile.php"
  12. method="post"
  13. enctype="multipart/form-data"
  14. >
  15. <fieldset>
  16. <legend>文件上传</legend>
  17. <label for="my_file"></label>
  18. <input type="file" name="my_file" id="my_file" />
  19. <button>上传</button>
  20. </fieldset>
  21. </form>
  22. </body>
  23. </html>

成功上传文件,并按年/月分类存放

网友评论