<?php
 //封装php中的单文件(图片)上传类
 /*
  //参数1:$file 文件数组  5个属性值 name,type,size,tmp,error
  //参数2:文件保存的路径$path  
  //参数3:文件上传允许的类型 $allow数组   $allow=array('image/jpeg','image/jpg','image/png','image/gif')
  //参数4: 允许文件上传的最大大小 $size
  //返回值: return $imageName文件的名字
 */
 header('content-type:text/html;charset=utf-8');
 class Upload{
     //定义一个属性,专门保存错误信息
       public static $error;
      //文件转移的方法
   public function uploadFile($file,$size,$path){
        if(!is_dir($path)){
          $this->mkPath($path);
        }
        $allow=array('image/jpeg','image/jpg','image/png','image/gif');
       
      //首先判断文件是否已上传到临时目录
       if(!is_array($file)){
          Upload::$error='不是一个有效的文件';
          return false;
       }
      //判断文件是否上传到临时目录成功
      switch($file['error']){
        case 1:
            Upload::$error='上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。';
            return false;
        case 2:
            Upload::$error='上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
            return false;
        case 3:
            Upload::$error='文件只有部分被上传';
            return false;
        case 4:
            Upload::$error='没有文件被上传';
             return false;
        case 6:
            Upload::$error='找不到临时文件夹';
            return false;
        case 7:
             Upload::$error='文件写入失败';
             return false;  
      }
      //判断文件类型是否是图片
       if(!in_array($file['type'],$allow)){
          Upload::$error='不是要求的文件类型';
          return false;
       }
      //判断文件的大小是否在允许的范围内
       if($file['size']>$size){
          Upload::$error='超出允许最大文件大小';
          return false;
       }
    
       //文件转移
       if(move_uploaded_file($file['tmp_name'],$path.'/'.$this->getName($file))){
          return $file['name'];
       }else{
          return Upload::$error;
       }
   }
    //创建目录的方法
        private function mkPath($path){
        mkdir($path);
    }
    //文件重命名
        private function getName($file){
          return time().$file['name'];
        }

}

封装upload文件上传类的更多相关文章

  1. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  2. Php文件上传类class.upload.php

    简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...

  3. PHP 之文件上传类封装

    一.前端代码 <!doctype html> <html lang="en"> <head> <meta charset="UT ...

  4. THINKPHP源码学习--------文件上传类

    TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...

  5. ASP.NET 文件上传类 简单好用

    调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...

  6. PHP 文件上传类

    FileUpload.;                $];                $_newname = date(,). :                             To ...

  7. php 文件上传类 实例分享

    最近在研究php上传的内容,找到一个不错的php上传类,分享下. <?php /** * 文件上传类 * class: uploadFile * edit: www.jbxue.com */ c ...

  8. ThinkPHP文件上传类

    TP框架自带文件上传类使用: 类文件在ThinkPHP/Library/Think/默认在目录下 public function upload(){ $upload = new \Think\Uplo ...

  9. php 文件上传类,功能相当齐全,留作开发中备用吧。

    收藏一个经典好用的php 文件上传类,功能相当齐全,留作开发中备用吧. 好东西,大家都喜欢,才是真的好,哈哈!!! <?php  /**   * 文件上传类   */  class upload ...

随机推荐

  1. OC接收数据时毫秒转date时间最简略方法

    一般项目中接收后台的数据会收到毫秒格式的date,需要换算成正规日期格式,这时候我们的好朋友command + c 和 command + v就得出来帮忙了: 可以复制使用如下方法: + (NSStr ...

  2. Excel VBA

    =COUNTIF(Y3:Y212,"=11") =SUMIF(Y3:Y212,"=11",AA3:AA212) =SUMPRODUCT((Y3:Y212=&qu ...

  3. Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel

    本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...

  4. 读书笔记——《图解TCP/IP》(1/4)

    读书笔记——<图解TCP/IP>(1/4) 经典摘抄 第一章 网络基础知识 1.独立模式:计算机未连接到网络,各自独立使用的方式. 2.广域网 WAN 局域网 LAN 城域网 MAN 3. ...

  5. Solaris 10下Qt编译Oracle 10g驱动

    上回书讲到<Oracle 10g在Solaris 10中安装详解>,现在开始用Qt来编译下Oracle 10g驱动吧!这样就可以通过Qt程序联入Oracle数据库了! Oracle的环境变 ...

  6. ubuntu12.04 安装 setuptools

    ubuntu 12.04 安装django时,提示缺少setuptools. 转载自: http://blog.csdn.net/xudongtiankong/article/details/8180 ...

  7. OrderSessionHelper查看订单在session是否存在的辅助类

    1. package com.biotool.web.controller.helper; import org.apache.commons.lang3.StringUtils; import ja ...

  8. LeetCode Course Schedule II

    原题链接在这里:https://leetcode.com/problems/course-schedule-ii/ 题目: There are a total of n courses you hav ...

  9. php 或js 常用的正则表达式

    1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:2.    "^\d+$" //非负整数(正整数 + 0)3.    "^[0-9 ...

  10. ThreadLocal 多线程并发,数据隔离

    ThreadLocal:  创建一个线程本地变量. 本质:在ThreadLocal类中有一个Map,用于存储每一个线程的变量的副本. 优点:既实现多线程并发,游兼顾数据的安全性. 区别:Synchro ...