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语法(5)
Oct 09 PHP
PHP DataGrid 实现代码
Aug 12 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
从手册去理解分析PHP session机制
Jul 17 PHP
php数组合并的二种方法
Mar 21 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
May 06 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
PHP进程通信基础之信号
Feb 19 PHP
弹出模态框modal的实现方法及实例
Sep 19 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中的插件机制原理和实例
2014/07/08 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
javascript闭包入门示例
2014/04/30 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
Angular实现的简单定时器功能示例
2017/12/28 Javascript
javascript回调函数详解
2018/02/06 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
如何高效使用Python字典的方法详解
2017/08/31 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
pandas的object对象转时间对象的方法
2018/04/11 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
python爬虫基础之urllib的使用
2020/12/31 Python
解决Pyinstaller打包软件失败的一个坑
2021/03/04 Python
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
新学期标语
2014/06/30 职场文书
员工手册编写范本
2015/05/14 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL