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 相关文章推荐
第1次亲密接触PHP5(1)
Oct 09 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
thinkphp的c方法使用示例
Feb 24 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
wordpress网站转移到本地运行测试的方法
Mar 15 PHP
php之可变函数的实例详解
Sep 13 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
我的论坛源代码(二)
2006/10/09 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
CI框架的安全性分析
2016/05/18 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
javascript 面向对象 function类
2010/05/13 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
全民健身日活动方案
2014/01/29 职场文书
趣味活动策划方案
2014/02/08 职场文书
个人租房协议书
2014/04/09 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
小学生差生评语
2014/12/29 职场文书
党支部意见范文
2015/06/02 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android