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将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
codeigniter发送邮件并打印调试信息的方法
Mar 21 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
Symfony2之session与cookie用法小结
Mar 18 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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源代码安装常见错误与解决办法分享
2013/05/28 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
2019/10/24 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
2020/07/09 Javascript
教你用python3根据关键词爬取百度百科的内容
2016/08/18 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
Django配置文件代码说明
2019/12/04 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
聘用意向书范本
2014/04/01 职场文书
职业生涯规划书前言
2014/04/15 职场文书
代理人委托书
2014/08/01 职场文书
教师节活动总结
2014/08/29 职场文书
商铺门面租房协议书
2014/10/21 职场文书
2014小学数学教师个人工作总结
2014/12/18 职场文书
父母教会我观后感
2015/06/17 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs