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 相关文章推荐
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
Apr 25 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
curl和libcurl的区别简介
Jul 01 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 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中多维数组的foreach遍历示例
2014/06/13 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
javascript json2 使用方法
2010/03/16 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
简单实现js点击展开二级菜单功能
2017/05/16 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
javascript实现计算器功能
2020/03/30 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
介绍Python中几个常用的类方法
2015/04/08 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
tensorflow 自定义损失函数示例代码
2020/02/05 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
Python with语句用法原理详解
2020/07/03 Python
设计师珠宝:Ylang 23
2018/05/11 全球购物
建筑工程技术应届生自荐信
2013/09/27 职场文书
python urllib库的使用详解
2021/04/13 Python