php封装单文件上传到数据库(路径)

1.首先思考一个问题上传到数据库是上传的图片还是图片地址这里我们上传的是图片地址,因为图片或音频存数据库中过大,数据库会崩掉。

下面是封装的文件上传的方法:

  1. <?php
  2. /*
  3. *@prame string key
  4. *@prame string path
  5. *@prame String maxSize
  6. *@prame array allowMime
  7. *@prame array allowFiletype
  8. *@prame bool true
  9. *
  10. *auther wulei
  11. */
  12. function upload($key,$path,$maxSize,$allowMime,$allowType,$ifFileName = true){
  13. //第一步 判断错误码
  14. if($_FILES[$key]['error']){
  15. switch($_FILES[$key]['error']){
  16. case 1:
  17. $str = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。";
  18. break;
  19. case 2:
  20. $str = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
  21. break;
  22. case 3:
  23. $str = "文件只有部分被上传。";
  24. break;
  25. case 4:
  26. $str = "没有文件被上传。";
  27. break;
  28. case 6:
  29. $str = "找不到临时文件夹。";
  30. break;
  31. case 7:
  32. $str = "文件写入失败";
  33. break;
  34. }
  35. return [0,$str];
  36. }
  37. //判断文件大小
  38. if($_FILES[$key]['size']>$maxSize){
  39. return [0,'传的文件超过最大限制'];
  40. }
  41. //判断文件的mime类型
  42. if(!in_array($_FILES[$key]['type'],$allowMime)){
  43. return [0,'不符合的mime类型'];
  44. }
  45. //判断文件的后缀
  46. $info = pathinfo($_FILES[$key]['name']);
  47. $sub = $info['extension'];
  48. if(!in_array($sub,$allowType)){
  49. return [0,'不符合的文件后缀'];
  50. }
  51. //判断是否是随机文件
  52. if($ifFileName){
  53. $name = uniqid().'.'.$sub;
  54. }else{
  55. $name = $info;
  56. }
  57. //拼接路径
  58. $path = rtrim($path,'/').'/'.date('Y/m/d').'/';
  59. //判断文件是否存在,不存在则创建
  60. if(!file_exists($path)){
  61. mkdir($path,0777,true);
  62. }
  63. //判断是否是上传文件
  64. if(is_uploaded_file($_FILES[$key]['tmp_name'])){
  65. if(move_uploaded_file($_FILES[$key]['tmp_name'],$path.$name)){
  66. echo '文件上传成功';
  67. return [1,$path.$name];
  68. }else{
  69. return[0,'上传文件失败'];
  70. } //phpfensi.com
  71. }else{
  72. return [0,'文件不存在'];
  73. }
  74. }

2.html 页面

  1. <html>
  2. <head>
  3. <title>文件上传</title>
  4. <meta charset = "utf-8"/>
  5. </head>
  6. <body>
  7. <form action = "onUpload.php" method = "post" enctype ="multipart/form-data">
  8. <!--<input type = "text" name = "username"/><br/>-->
  9. <input type = "file" name = "file"/><br/>
  10. <input type = "submit" value ="提交"/>
  11. </form>
  12. </body>

3、下面我们链接数据库

这里我们直接使用了,看不懂的可以去看前面的封装的数据库方法那一篇文章.

  1. <?php
  2. //包含方法
  3. include 'uploed.php';
  4. include 'common.php';
  5. //得到方法
  6. $data = upload('file','image',pow(1024,2)*2,[
  7. 'image/png','image/jpeg','image/gif','image/wbmp'
  8. ],['png','jpg','jpeg','jpe','pjpeg','gif','wbmp','bmp']);
  9. //这里进行数据库操作
  10. if($data[0]){
  11. $date['img_path'] = $data[1];
  12. }
  13. insert($link,'user',$date);