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_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
php桌面中心(四) 数据显示
Mar 11 PHP
php MySQL与分页效率
Jun 04 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
php中数字0和空值的区别分析
Jun 05 PHP
php 类自动载入的方法
Jun 03 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 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
星际争霸中的热键
2020/03/04 星际争霸
PHP 基本语法格式
2009/12/15 PHP
php中session使用示例
2014/03/29 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
什么是JavaScript
2009/08/13 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
JS实现简单打字测试
2020/06/24 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
简单实现python数独游戏
2018/03/30 Python
python读写LMDB文件的方法
2018/07/02 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
python实现的汉诺塔算法示例
2019/10/23 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
2020/01/08 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
基于css3 animate制作绚丽的动画效果
2015/11/24 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
区优秀教师事迹材料
2014/02/10 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
幼儿园新年寄语
2014/04/03 职场文书
家长会欢迎标语
2014/06/24 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫
python数字图像处理:图像的绘制
2022/06/28 Python