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


Posted in PHP onOctober 15, 2017

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

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

<?php
/*
*@prame string key
*@prame string path
*@prame String maxSize
*@prame array allowMime
*@prame array allowFiletype
*@prame bool true
*
*auther wulei
*/
function upload($key,$path,$maxSize,$allowMime,$allowType,$ifFileName = true){
  //第一步 判断错误码
  if($_FILES[$key]['error']){
    switch($_FILES[$key]['error']){
      case 1:
        $str = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。";
        break;
      case 2:
        $str = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。";
        break;
      case 3:
        $str = "文件只有部分被上传。";
        break;
      case 4:
        $str = "没有文件被上传。";
        break;
      case 6:
        $str = "找不到临时文件夹。";
        break;
      case 7:
        $str = "文件写入失败";
        break;
    }
    return [0,$str];
  }
  //判断文件大小
  if($_FILES[$key]['size']>$maxSize){
    return [0,'传的文件超过最大限制'];
  }
  //判断文件的mime类型
  if(!in_array($_FILES[$key]['type'],$allowMime)){
    return [0,'不符合的mime类型'];
  }
  //判断文件的后缀
  $info = pathinfo($_FILES[$key]['name']);
  $sub = $info['extension'];
  if(!in_array($sub,$allowType)){
    return [0,'不符合的文件后缀'];
  }
  //判断是否是随机文件
  if($ifFileName){
    $name = uniqid().'.'.$sub;
  }else{
    $name = $info;
  }
  //拼接路径
  $path = rtrim($path,'/').'/'.date('Y/m/d').'/';
  //判断文件是否存在,不存在则创建
  if(!file_exists($path)){
    mkdir($path,0777,true);
  }
  //判断是否是上传文件
  if(is_uploaded_file($_FILES[$key]['tmp_name'])){
    if(move_uploaded_file($_FILES[$key]['tmp_name'],$path.$name)){
      echo '文件上传成功';
      return [1,$path.$name];
    }else{
      return[0,'上传文件失败'];
    }
  }else{
    return [0,'文件不存在'];
  }
  }

2.html 页面

<html>
<head>
  <title>文件上传</title>
  <meta charset = "utf-8"/>
</head>
<body>
  <form action = "onUpload.php" method = "post" enctype ="multipart/form-data">
    <!--<input type = "text" name = "username"/><br/>-->
    <input type = "file" name = "file"/><br/>
    <input type = "submit" value ="提交"/>
  </form>
</body>

3、下面我们链接数据库

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

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

总结

以上所述是小编给大家介绍的php封装单文件上传到数据库(路径),希望对大家有所帮助!

PHP 相关文章推荐
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
linux下为php添加curl扩展的方法
Jul 29 PHP
PHP运行模式的深入理解
Jun 03 PHP
深入php中var_dump方法的使用详解
Jun 24 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
php实现读取手机客户端浏览器的类
Jan 09 PHP
php使用Cookie控制访问授权的方法
Jan 21 PHP
详解PHP中的状态模式编程
Aug 11 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
php 数组随机取值的简单实例
May 23 PHP
PHP asXML()函数讲解
Feb 03 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 #PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 #PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 #PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 #PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 #PHP
PHP长网址与短网址的实现方法
Oct 13 #PHP
如何直接访问php实例对象中的private属性详解
Oct 12 #PHP
You might like
PHP排序算法的复习和总结
2012/02/15 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
深入理解python中的select模块
2017/04/23 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Python绑定方法与非绑定方法详解
2017/08/18 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
css3实现六边形边框的实例代码
2019/05/24 HTML / CSS
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
护理专业个人求职简历的自我评价
2013/10/13 职场文书
市场部经理岗位职责
2014/04/10 职场文书
股权转让协议书
2014/04/12 职场文书
学校安全责任书范本
2014/07/23 职场文书
中学生逃课检讨书
2015/02/17 职场文书
工作态度怎么写
2015/06/25 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书