<?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. NSUserdefaults 简介以及存储自定义数据类型的方法

    一.了解NSUserDefaults以及它可以直接存储的类型 NSUserDefaults是一个单例,在整个程序中只有一个实例对象,他可以用于数据的永久保存,而且简单实用,这是它可以让数据自由传递的一 ...

  2. 在Asp.net MVC中访问静态页面

    有时候由于一些特殊的需要,我们需要在MVC中访问HTML页面,假如您将这个页面放在Views中的话,去访问将会收到一个404,但是放在Views外面的目录则不受此限制. 那么我们就来解决View里面的 ...

  3. transform: translateY(-50%) 实现元素垂直居中效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. [LeetCode] Longest Palindromic Substring(manacher algorithm)

    Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...

  5. 10 Golden Rules of Project Risk Management

    The benefits of risk management in projects are huge. You can gain a lot of money if you deal with u ...

  6. 【转】Android Canvas绘图详解(图文)

    转自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1212/703.html Android Canvas绘图详解(图文) 泡 ...

  7. 深入理解BootStrap之栅格系统(布局)

    1.栅格系统(布局) Bootstrap内置了一套响应式.移动设备优先的流式栅格系统,随着屏幕设备或视口(viewport)尺寸的增加,系统会自动分为最多12列. 我在这里是把Bootstrap中的栅 ...

  8. Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统 nsswitch.conf配置文件

    Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统  nsswitch.conf配置文件 朋友们,今天我对你们说,在此时此刻,我们虽然遭受种种困难和挫折,我仍然有一个梦 ...

  9. Windows下mysql忘记密码的解决方法

    Windows下mysql忘记密码的解决方法 mysql5.0 http://www.jb51.net/article/21984.htm方法一: 1.在DOS窗口下输入 net stop mysql ...

  10. JBoss远程方法调用漏洞利用详解

    早上起床打开微博看到空虚浪子心大神发的一篇有关Jboss漏洞的文章,对我等菜鸟来说那边文章看起来还是很吃力的,所以查了查国内外的资料,翻译写了这边文章,记录一下. 在JBoss服务器上部署web应用程 ...