<?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. php内容

    PHP语言原理:先把代码显示在源代码中,再通过浏览器解析在网页上 PHP中关键字通常分为四种类型: 1. 用于数据类型定义的关键字,如:int,string,bool,classic,object和a ...

  2. 一个高度压缩的bit位图字典的实现

    微软实现的字典功能简单方便,出于全局性考虑,其内部实现比较复杂,在对海量数据处理时,仅仅存放一个对象地址就将占据32个bit(64位机器中占据64个bit),而且其内部通过int[]来处理hash桶, ...

  3. ubuntu下hadoop环境配置

    软件环境: 虚拟机:VMware Workstation 10 操作系统:ubuntu-12.04-desktop-amd64 JAVA版本:jdk-7u55-linux-x64 Hadoop版本:h ...

  4. json-lib 之jsonConfig具体应用

    一,setCycleDetectionStrategy 防止自包含 public static void testCycleObject() {         CycleObject object ...

  5. threading多线程

    什么是线程? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.一 ...

  6. thinkphp接手机网站接口

    首先说下,支付宝提供的demo不一定完全正确,可能回缺少些步骤,所以,最好按照规则文档的步骤参照demo写. 先说遇到的问题: 1.错误0001,缺少partner.service等必参数 最初选择的 ...

  7. disable jboss JMXInvokerServlet .

    jboss 默认有几个控制台,都是可能存在漏洞被黑客利用,除了web console .jmx console. 还有JMXInvokerServlet,访问路径是ip/invoker/JMXInvo ...

  8. pmp培训.rar

    pmp培训.rar http://pan.baidu.com/s/1sleUQol

  9. RabbitMQ学习总结 第六篇:Topic类型的exchange

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  10. Power-BI助顾得医药济世康民

    公司简介成立于 2011 年 9 月 24 日,是一家主要以医院销售为主,集批发.配送.售后服务于一体的商业公司.现有药品储备面积 16000 平方米,开户医院 52 家,营销网络辐射山西省境内部分县 ...