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实现ping
Oct 09 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
php与php MySQL 之间的关系
Jul 17 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
Oct 15 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
php树型类实例
Dec 05 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
php+mysql实现无限级分类
Nov 11 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
Apr 04 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
PHP基于进程控制函数实现多线程
Dec 09 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
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php微信支付之APP支付方法
2015/03/04 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
jquery制作select列表双向选择示例代码
2014/09/02 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
vue如何根据网站路由判断页面主题色详解
2018/11/02 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python进行两个表格对比的方法
2018/06/27 Python
Python双向循环链表实现方法分析
2018/07/30 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
对python 自定义协议的方法详解
2019/02/13 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
幼儿园亲子活动方案
2014/01/29 职场文书
妇产医师自荐信
2014/01/29 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
学术会议邀请函
2015/01/30 职场文书
内勤岗位职责范本
2015/04/13 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript