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中数据的批量导入(csv文件)
Oct 09 PHP
PHP代码审核的详细介绍
Jun 13 PHP
php ckeditor上传图片文件名乱码解决方法
Nov 15 PHP
CI框架开发新浪微博登录接口源码完整版
May 28 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
PDO防注入原理分析以及注意事项
Feb 25 PHP
Symfony核心类概述
Mar 17 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
php7 安装yar 生成docker镜像
May 09 PHP
使用WAMP搭建PHP本地开发环境
May 10 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
JS扩展方法实例分析
2015/04/15 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
Electron实现应用打包、自动升级过程解析
2020/07/07 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
python计算圆周率pi的方法
2015/07/11 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
python Pandas库基础分析之时间序列的处理详解
2019/07/13 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
Python 字典中的所有方法及用法
2020/06/10 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
Sam’s Club山姆会员商店:沃尔玛旗下高端会员制商店
2017/01/16 全球购物
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
民政局个人整改措施
2014/09/24 职场文书
安全生产先进个人总结
2015/02/15 职场文书
单身证明范本
2015/06/15 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python