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 相关文章推荐
MySql 按时间段查询数据方法(实例说明)
Nov 02 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php 模拟POST提交的2种方法详解
Jun 17 PHP
php判断页面是否是微信打开的示例(微信打开网页)
Apr 25 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
Symfony2函数用法实例分析
Mar 18 PHP
smarty的section嵌套循环用法示例
May 28 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
php 的多进程操作实践案例分析
Feb 28 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图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
ZendFramework2连接数据库操作实例
2017/04/18 PHP
javascript call和apply方法
2008/11/24 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
[00:37]DOTA2上海特级锦标赛 OG战队宣传片
2016/03/03 DOTA
Python字典,函数,全局变量代码解析
2017/12/18 Python
python根据时间获取周数代码实例
2019/09/30 Python
Python实现微信表情包炸群功能
2021/01/28 Python
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
优秀党员获奖感言
2014/02/18 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
项目建议书模板
2014/05/12 职场文书
教育局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
优秀班主任申报材料
2014/12/16 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
python析构函数用法及注意事项
2021/06/22 Python
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
一文简单了解MySQL前缀索引
2022/04/03 MySQL
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android
python三子棋游戏
2022/05/04 Python