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小程序自动提交到自助友情连接
Nov 24 PHP
php 图片加水印与上传图片加水印php类
May 12 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
php结合curl实现多线程抓取
Jul 09 PHP
PHP实现适用于文件内容操作的分页类
Jun 15 PHP
php简单统计中文个数的方法
Sep 30 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
php与c 实现按行读取文件实例代码
Jan 03 PHP
PHP设计模式之模板方法模式实例浅析
Dec 20 PHP
PHP中的自动加载操作实现方法详解
Aug 06 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+SqlServer实现分页显示
2006/10/09 PHP
php 移除数组重复元素的一点说明
2008/11/27 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
2015/12/23 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
Javascript异步流程控制之串行执行详解
2020/09/27 Javascript
Python切换pip安装源的方法详解
2016/11/18 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Django REST 异常处理详解
2020/07/15 Python
JBL英国官网:JBL UK
2018/07/04 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
2014年大学生党课心得体会范文
2014/03/29 职场文书
爱之链教学反思
2014/04/30 职场文书
小学生环保倡议书
2014/05/15 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书