<?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. linux环境下的伪分布式环境搭建

    本文的配置环境是VMware10+centos2.5. 在学习大数据过程中,首先是要搭建环境,通过实验,在这里简短粘贴书写关于自己搭建大数据伪分布式环境的经验. 如果感觉有问题,欢迎咨询评论. 一:伪 ...

  2. php--分享插件

    分享插件地址:   http://www.jiathis.com/

  3. NSPredicate 根据谓语动词 进行 模糊查询

    /** *  模糊查询 */ NSString *filterString = textField.text; NSPredicate *predicate = [NSPredicate predic ...

  4. 二级c程序设计题(2)

    原文:http://www.cnblogs.com/imaker/p/6128049.html 所属年份:2010.9;2012.3编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005 ...

  5. SQL判断字符串里不包含字母

    Oracle: 方法一:通过To_Number 函数异常来判断,因为这个函数在转换不成功的时候是报错,所以只能用存储过程包装起来. CREATE OR REPLACE FUNCTION Is_Numb ...

  6. Qt4过渡至Qt5

    技术在不断进步,新知识也理应不断学习!Qt5的发布带给我无尽的好奇心,然而,受项目影响,一直使用VS2008 + Qt4.8也未曾及时更新.这几天,果断装上VS2010 + Qt5.1,开始研究.Qt ...

  7. 关于OC语法的公开和私有的讨论

    关于OC语法的公开和私有的讨论 OC语法中,类的.h文件向外面暴露类的功能/方法接口,其中定义的属性/方法/协议/类别/类扩展都属于公开的,但实例变量要看限定词(@protected/@public/ ...

  8. EF Code First教程-02 约定配置

    示例: public class Phone { [Key] //主键 public int Id { get; set; } [Required] //不能为空 [MinLength(),MaxLe ...

  9. Android界面实现----PagerTabStrip绚丽的滑动标签

    在ViewPager这种可以滑动的控件上,总是有很多的文章可以做.Android自带的控件,实现一个指示器,这个控件,就是support-v4包里面的PagerTabStrip控件. 首先,我们先看一 ...

  10. CentOS 6.6 yum 搭建LAMP环境

    CentOS 查看操作系统版本 [root@oa ~]# cat /etc/redhat-releaseCentOS release 6.6 (Final) 参考linux centos yum安装L ...