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 相关文章推荐
上传文件先创建目录 再上传到目录里面去
Dec 29 PHP
PHP中include与require使用方法区别详解
Oct 19 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
php程序内部post数据的方法
Mar 31 PHP
php显示时间常用方法小结
Jun 05 PHP
一个完整的php文件上传类实例讲解
Oct 27 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
php session的应用详细介绍
Mar 22 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
Jul 27 PHP
php时间戳转换代码详解
Aug 04 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使用CURL实现多线程抓取网页
2015/04/30 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
JavaScript调用ajax获取文本文件内容实现代码
2014/03/28 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
React组件中的this的具体使用
2018/02/28 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
python进阶教程之动态类型详解
2014/08/30 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
Python FFT合成波形的实例
2019/12/04 Python
解决pycharm 安装numpy失败的问题
2019/12/05 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
用python制作个视频下载器
2021/02/01 Python
HTML5边玩边学(1)画布实现方法
2010/09/21 HTML / CSS
html5 视频播放解决方案
2016/11/06 HTML / CSS
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
如何手工释放资源
2013/12/15 面试题
奥巴马上海演讲稿
2014/09/10 职场文书
考研英语复习计划
2015/01/19 职场文书
导游词格式
2015/02/13 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
2019 入党申请书范文
2019/07/10 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书