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 相关文章推荐
PHP开发大型项目的一点经验
Oct 09 PHP
PHP 输出缓存详解
Jun 20 PHP
PHP 分页原理分析,大家可以看看
Dec 21 PHP
php中数字0和空值的区别分析
Jun 05 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP CURL 内存泄露问题解决方法
Feb 12 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 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
PHP4之COOKIE支持详解
2006/10/09 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
基于jquery的表头固定的若干方法
2011/01/27 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
node.js入门学习之url模块
2017/02/25 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
使用webpack打包koa2 框架app
2018/02/02 Javascript
vue获取当前激活路由的方法
2018/03/17 Javascript
layui清除radio的选中状态实例
2019/11/14 Javascript
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
Python如何实现定时器功能
2020/05/28 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
事业单位请假制度
2014/01/13 职场文书
食品安全工作方案
2014/05/07 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
中秋客户感谢信
2015/01/22 职场文书
教师辞职书范文
2015/02/26 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
Python学习之包与模块详解
2022/03/19 Python