博主信息
博文 15
粉丝 0
评论 0
访问量 11162
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP文件上传函数封装
ッ小眼睛っ
原创
790人浏览过

封装函数

  1. <?php
  2. function uploadFile($fileInfo,$uploadPath='./uploads',$flag=true,$allowExt=['jpg','jpeg','png','wbmp','gif'],$maxSize=(5*1024*1024)){
  3. if($fileInfo['error'] == 0){
  4. $arr = explode('.',$fileInfo['name']);
  5. $ext = end($arr);
  6. $prefix = array_shift($arr);
  7. //检测文件类型
  8. if(!in_array($ext,$allowExt)){
  9. $res['error'] = '非法的文件类型';
  10. }
  11. //检测文件大小
  12. if($fileInfo['size'] > $maxSize){
  13. $res['error'] ='文件大小超过限制';
  14. }
  15. //检测文件名是否合法
  16. if($flag){
  17. if(!getimagesize($fileInfo['tmp_name'])){
  18. $res['error'] ='文件不是真实图片';
  19. }
  20. }
  21. //检测文件是否通过http post上传
  22. if(!is_uploaded_file($fileInfo['tmp_name'])){
  23. $res['error'] ='上传方式错误:请使用http post 方式上传';
  24. }
  25. if(!empty($res)) return;
  26. if(!file_exists($uploadPath)){
  27. mkdir($uploadPath,0770,true);
  28. chmod($uploadPath,0770);
  29. }
  30. // 根据$prefix time() 生成唯一图片地址
  31. $des = $uploadPath.'/'.md5($prefix.time()).'.'.$ext;
  32. $result = move_uploaded_file($fileInfo['tmp_name'],$des);
  33. if(!$result)
  34. {
  35. $res['error'] = '文件移动失败';
  36. }else{
  37. $res['info'] = $fileInfo['name'] . '上传成功';
  38. $res['fileRealPath'] = $des;
  39. }
  40. return $res;
  41. }else{
  42. switch ($fileInfo['error']){
  43. case 1:
  44. $res['error'] = '文件超过php.ini中upload_max_fileize的值';
  45. break;
  46. case 2:
  47. $res['error'] = '文件大小超过表单中MAX_FILE_SIZE的指定值';
  48. break;
  49. case 3:
  50. $res['error'] = '文件只有部分被上传';
  51. break;
  52. case 4:
  53. $res['error'] = '文件没有被上传';
  54. break;
  55. case 6:
  56. $res['error'] = '找不到临时文件夹';
  57. break;
  58. default:
  59. $res['error'] = '系统错误';
  60. break;
  61. }
  62. }
  63. }
  64. function upload($fileInfo)
  65. {
  66. foreach($fileInfo as $k=>$v)
  67. {
  68. foreach($v as $kk=>$vv)
  69. {
  70. if($kk == $kk )
  71. {
  72. $files[$kk][$k] = $vv;
  73. }
  74. }
  75. }
  76. return $files;
  77. }

请求函数的

  1. <?php
  2. require 'common.php';
  3. $files = upload($_FILES['my_file']);
  4. foreach ($files as $k){
  5. $res[]['msg'] = uploadFile($k)['fileRealPath'];
  6. }
  7. print_r($res);

设置错误显示

1,Linux 服务器下的设置
(1)编辑 php.ini,将 log_errors 设置为 on:

  1. log_errors = On

(2)保存后重启 apache 即可。

2,Windows 服务器下的设置
(1)同样是编辑 php.ini。只不过除了将 log_errors 设置为 on 外,还需要定义 error_log 的路径及文件名。这样错误日志就会保存到指定的文件中。

  1. log_errors = On
  2. error_log = d:/php_log/errors.log

特别要注意的是,日志保存目录需要授予 php 标识用户的修改权限,否则日志文件无法生成。

手动将错误信息记录到日志文件中

经过上面的配置后,除了运行时产生的所有错误会自动记录到日志文件中外,我们也可以在代码中使用 error_log() 方法主动将一些信息写到日志文件中,方便定位问题。

  1. <?
  2. error_log("Mysql数据库不可用!", 0); //将错误消息写入到操作系统日志中
  3. ?>
批改老师: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+教程免费学