Blogger Information
Blog 15
fans 0
comment 0
visits 7770
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP文件上传函数封装
ッ小眼睛っ
Original
593 people have browsed it

封装函数

  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. ?>
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post