php之文件上传类代码

/*
单个文件上传  

功能
上传文件
配置允许的后缀
配置允许的大小  

获取文件后缀
判断文件的后缀
报错
*/
class UpTool{
    protected $allowExt = 'jpg,jpeg,gif,bmp,png';
    protected $maxSize = 1; //1M ,以M为单位  

    protected $file = null; //准备储存上传文件信息
    protected $errno = 0;  //错误代码
    protected $error = array(
            0=>'无错',
            1=>'上传文件大小超出系统限制',
            2=>'上传文件的大小超出网页表单限制',
            3=>'文件只有部分被上传',
            4=>'没有文件被上传',
            6=>'找不到临时文件夹',
            7=>'文件写入失败',
            8=>'不允许的文件后缀',
            9=>'文件大小超出类的允许范围',
            10=>'创建目录失败',
            11=>'文件移动失败'
        );  

    /*
    上传
    */
    public function up($key) {
        if (!isset($_FILES[$key])) {
            return false;
        }
        $f = $_FILES[$key];  

        //检验上传是否成功
        if ($f['error']) {
            $this->errno = $f['error'];
            return false;
        }  

        //获取后缀
        $ext = $this->getExt($f['name']);
        //检查后缀
        if (!$this->isAllowExt($ext)) {
            $this->errno = 8;
            return false;
        }
        //检查大小
        if (!$this->isAllowSize($f['size'])) {
            $this->errno = 9;
            return false;
        }
        //创建目录
        $dir = $this->mk_dir();
        if ($dir == false) {
            $this->errno = 10;
            return fasle;
        }  

        //生成随机文件名
        $newname = $this->randName() . '.' .$ext;
        //$dir = $dir . '/' .$newname;
        //移动
        if(!move_uploaded_file($f['tmp_name'], $dir . '/' .$newname)) {
            $this->errno = 11;
            return false;
        }
        return true;//str_replace(ROOT, '', $dir);
    }  

    public function getErr(){
        return $this->error[$this->errno];
    }  

    /*
    parm string $exts 允许的后缀
    自动添加 允许的后缀,和文件的大小
    */
    public function setExt($exts) {
        $this->allowExt = $exts;
    }
    public function setSize($num) {
        $this->maxSize = $num;
    }  

    /*
        string $file
    return string $ext 后缀
    */  

    protected function getExt($file) {
        $tmp = explode('.', $file);
        return end($tmp);
    }
    /*
    string $ext 文件后缀
    return bool
    防止大小写的问题
    */
    protected function isAllowExt($ext) {
        return in_array(strtolower($ext), explode(',', strtolower($this->allowExt))) ;  

    }  

    /*
        检查文件的大小
    */
    protected function isAllowSize($size) {
        return $size <= $this->maxSize *1024*1024;
    }
    //按日期创建目录的方法
    protected function mk_dir() {
        $dir = 'images/' . date('Ym/d');
        if(is_dir($dir) || mkdir($dir,0777,true)) {
            return $dir;
        } else {
            return false;
        }
    }  

    /*
        生成随机文件名
    */
    protected function randName($length = 6) {
        $str = 'abcdefghijkmnpqrstuvwxyz23456789';
        return substr(str_shuffle($str),0,$length);
    }  

}

form 表单

<form action="up.php" method="post" enctype="multipart/form-data">
        用户名:<input type="text" name="username" /> <br/>
        头像:   <input type="file" name="pic" />
        <input type="submit" value="提交" />
    </form>

 

另起页面调用

 

require('./UpTool.class.php');  

$uptool = new UpTool();
$uptool->setExt('rar,doc');
$uptool->setSize(1);  

if ($uptool->up('pic')) {
    echo '上传成功';
} else {
    echo '失败';
    echo $uptool->getErr();
}

 

时间: 2024-11-01 20:26:45

php之文件上传类代码的相关文章

PHP中codeigniter文件上传类代码实例

  codeigniter文件上传类代码实例 文件上传类 CodeIgniter 的文件上传类允许文件被上传.您可以设置指定上传某类型的文件及指定大小的文件. 处理过程 上传文件普遍的过程: 一个上传文件用的表单,允许用户选择一个文件并上传它. 当这个表单被提交,该文件被上传到指定的目录. 同时,该文件将被验证是否符合您设定的要求. 一旦文件上传成功,还要返回一个上传成功的确认窗口. 这里有一个简短的教程来显示这个过程.此后你将会找到相关的参考信息. 创建上传表单 运用文本编辑器创建一个名为up

一个实用的php 文件上传类代码

这里是来自网络朋友的一个实现的文件上传类代码,我们详细的介绍了每个变量的用处,下面看看吧,有需要可以参考一下. <?php教程  /**   * 文件上传类   */  class uploadFile {   public $max_size = '1000000';//设置上传文件大小   public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称   public $allow_types;//允许上传的文件扩展名,不同文件类型用"|&q

多文件上传类代码

    真正支持单文件和多文件上传类代码,修正了$_FILES[$field]['name']中的$field不能用变量只能和表单中的文件名name="userfile"一致的缺点$_FILES['userfile']['name'],这里<input type="file" name="userfile"> 中的文件名可以随意取. //index.htm1.单文件上传<form method="post"

php 文件上传类代码_php技巧

复制代码 代码如下: <?php /** * 文件上传类 */ class uploadFile { public $max_size = '1000000';//设置上传文件大小 public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称 public $allow_types;//允许上传的文件扩展名,不同文件类型用"|"隔开 public $errmsg = '';//错误信息 public $uploaded = '';//上

asp 文件上传类代码

dim oUpFileStream Class upload_file   dim Form,File,Version   Private Sub Class_Initialize    '定义变量   dim RequestBinDate,sStart,bCrLf,sInfo,iInfoStart,iInfoEnd,tStream,iStart,oFileInfo   dim iFileSize,sFilePath,sFileType,sFormvalue,sFileName   dim iF

php文件上传之原理分析与上传类代码

php教程文件上传之原理分析与上传类代码 今天研究PHP注册POST/GET大变量的时候,看到了关于这块的一些东西,跟踪了半天,,先记录下来,免得以后再如此麻烦的跟踪 处理器注册: [mod_php5.c, mod_php5模块初始化] php_init_handler(server_rec *s, pool *p)     ->[main/SAPI.c]sapi_startup(&apache_sapi_module)         ->[main/SAPI.c] sapi_glo

php文件上传类程序代码

 代码如下 复制代码 <?php  /**   * 文件上传类   */  class uploadFile {       public $max_size = '1000000';//设置上传文件大小     public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称     public $allow_types;//允许上传的文件扩展名,不同文件类型用"|"隔开     public $errmsg = '';//错误信息  

php 图片上传类代码

php 图片上传类代码,功能也比较全,大家根据需要选择. 先来个简单的: <? //http://www.jzxue.com class upLoad{ public $length; //限定文件大小 public $file; //判断此类是用于图片上传还是文件上传 public $fileName; //文件名 public $fileTemp; //上传临时文件 public $fileSize; //上传文件大小 public $error; //上传文件是否有错,php4没有 pub

ASP.NET实现的简单易用文件上传类

  这篇文章主要介绍了ASP.NET实现的简单易用文件上传类,本文给出实现代码和使用方法示例,需要的朋友可以参考下 调用方法: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 UploadFile uf = new UploadFile();   /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认:true),true原始文件名,false系统生成新文件名