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脚本的10个技巧(1)
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
php zlib压缩和解压缩swf文件的代码
Dec 30 PHP
QueryPath PHP 中的jQuery
Apr 11 PHP
PHP中break及continue两个流程控制指令区别分析
Apr 18 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
php实现微信发红包
Dec 05 PHP
Yii使用migrate命令执行sql语句的方法
Mar 15 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 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 cookis创建实现代码
2009/03/16 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
CI框架实现cookie登陆的方法详解
2016/05/18 PHP
几行代码轻松实现PHP文件打包下载zip
2017/03/01 PHP
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
Node.js实现文件上传
2016/07/05 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
layui实现三级联动效果
2019/07/26 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
python可视化实现代码
2019/01/15 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Python pandas用法最全整理
2019/08/04 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Python 寻找局部最高点的实现
2019/12/05 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
本科生详细的自我评价
2013/09/19 职场文书
syb养殖创业计划书
2014/01/09 职场文书
物资采购方案
2014/06/12 职场文书
大学生学雷锋活动总结
2014/06/26 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
寒假致家长的一封信
2015/10/10 职场文书
nginx设置资源请求目录的方式详解
2022/05/30 Servers
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers