当前位置:  开发笔记 > 编程语言 > 正文

经典的PHP文件上传类

在课堂上给大家写了一个经典的文件上传类,灵活性还可以,大家可以参考使用,上传文件:<?php/***author:PHP100.com*date:2012-9-15经典的文件上传类**/if(!empty($_POST[&#39;sub&#39;])){includ...">
  • 在课堂上给大家写了一个经典的文件上传类,灵活性还可以,大家可以参考使用,

    \

     

    上传文件:

     

    /**
    * author : PHP100.com
    * date :2012-9-15 经典的文件上传类 
    **/
     if(!empty($_POST[&#39;sub&#39;])){
      include("up.class.php");
      
      $up = new up($_FILES[&#39;up&#39;]);
    //参数,文件流必选,【指定目录,指定大小,指定文件名】可选
     }
     ?>
     
     
    上传类:
     
    /**
    * author : PHP100.com
    * date :2012-9-15 经典的文件上传类 
    **/
     class up {
        
    public $f_size;//定义的文件大小
        public $f_sys;//接收文件属性
    public $f_name;//自定义的文件名
    public $f_dir;//自定义上传目录
     
    //参数:文件流,目录,大小,文件名
    function __construct($sys,$dir="",$size="1",$name=""){
     $this->f_size=$size*1000000;
     $this->f_sys=$sys;
     $this->f_name=$name;
     $this->f_dir=$dir;
     $this->f_mv();
    }
     
    //判断文件大小
       function is_size(){
          if($this->f_sys[&#39;size&#39;]<=$this->f_size){
       return true;
     }else{
       return false;
     }
       } //end
       
       //判断文件类型,返回扩展名
       function is_type(){ 
    switch($this->f_sys[&#39;type&#39;]){
    case "image/x-png": $ok=".png";
    break;
    case "image/png": $ok=".png";
    break;
    case "application/pdf": $ok=".pdf";
    break;
    case "image/pjpeg": $ok=".jpg";
    break;
    case "image/jpeg": $ok=".jpg";
    break;
    case "image/jpg": $ok=".jpg";
    break;
    default: $ok=false;
    break;
    }
    return $ok;
         }
       
       //终止函数
       function f_over($n){
         echo $n;
    exit();
       }
       
       //判断文件夹是否存在,并创建
       function is_dirs(){
        if($this->f_dir){
    if(!is_dir($this->f_dir)){ 
      mkdir($this->f_dir);
    }
    return $this->f_dir;
    }else{
    if(!is_dir(date("Ymd"))){ 
      mkdir(date("Ymd"));
    }
    return date("Ymd");
    }
       }
       
       
       //文件名的定义,不定义而使用时间戳
       function is_name(){
          if($this->f_name){
      $fn=$this->f_name.$this->is_type();
     }else{
      $fn=time().rand(100,999).$this->is_type();
     }
     return $this->is_dirs()."/".$fn;
       }
     
     
       //上传文件
       function f_mv(){
     $this->is_size()?null:$this->f_over("文件超过大小");
     $this->is_type()?null:$this->f_over("文件类型不正确");;
    move_uploaded_file($this->f_sys[&#39;tmp_name&#39;],$this->is_name());
    }
     
    //请继续完善,水印,等等
     }
     
     
    ?>

    推荐阅读
    • 尽管许多人认为跑步是一项简单的运动,但实际上它涉及诸多专业知识。不正确的跑步方式不仅会降低锻炼效果,还可能引发伤害。例如,穿着不合脚或过于陈旧的跑鞋,会导致足部支撑不足,增加受伤风险。此外,跑步姿势不当、热身不足、过度训练等问题也同样值得关注。本文将详细介绍七大常见跑步误区,并提供专业的改进建议,帮助跑者避免这些问题,提高运动效率和安全性。 ... [详细]
    • Java初始化中的潜在风险与应对策略 ... [详细]
    • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
    • 在 HihoCoder 1505 中,题目要求从给定的 n 个数中选取两对数,使这两对数的和相等。如果直接对所有可能的组合进行遍历,时间复杂度将达到 O(n^4),因此需要考虑优化选择过程。通过使用哈希表或其他高效的数据结构,可以显著降低时间复杂度,从而提高算法的效率。具体实现中,可以通过预处理和存储中间结果来减少重复计算,进一步提升性能。 ... [详细]
    • 在探讨如何高效处理大规模数据报表的分页展示之前,首先需要明确导致报表加载缓慢的主要原因。通常情况下,这主要是由于两个方面:一是查询条件过于宽泛,使得数据库返回的结果集包含数百万甚至更多的记录;二是前端渲染性能不足,无法高效处理大量数据。为了优化这一过程,可以从以下几个方面入手:优化查询条件,减少不必要的数据返回;采用分页查询技术,每次仅加载所需的数据;利用缓存机制,减少对数据库的频繁访问;提升前端渲染效率,使用虚拟滚动等技术提高用户体验。 ... [详细]
    • 在Linux环境下,本文详细探讨了Apache服务器中CGI技术的应用与实现。首先,通过使用yum包管理器安装了必要的软件,如PHP。安装完成后,对Apache服务器进行了配置,确保CGI功能正常运行。此外,还介绍了如何编写和调试CGI脚本,以及如何在实际环境中部署这些脚本以提供动态网页内容。实验结果表明,通过合理的配置和优化,Apache服务器能够高效地支持CGI应用程序,为用户提供丰富的交互体验。 ... [详细]
    • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
    • 本文深入探讨了原型模式在软件设计中的应用与实现。原型模式通过使用已有的实例作为原型来创建新对象,而不是直接通过类实例化。这种方式不仅简化了对象的创建过程,还提高了系统的灵活性和效率。具体来说,原型模式涉及一个支持克隆功能的接口或基类,子类通过实现该接口来提供具体的克隆方法,从而实现对象的快速复制。此外,文章还详细分析了原型模式的优缺点及其在实际项目中的应用场景,为开发者提供了实用的指导和建议。 ... [详细]
    • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
    • 美国血统争议与遗传学研究进展:在遗传学领域,血统记录的准确性至关重要。然而,在实际操作中,记录错误时有发生。本文探讨了通过遗传学方法验证血统的有效性,并介绍了利用二叉树结构进行家谱分析的技术,特别是中序遍历和前序遍历的应用,为血统争议提供科学依据。 ... [详细]
    • 扎克伯格透露:一种新型类皮肤材料可能加速“元宇宙”愿景实现
      Meta公司的人工智能团队与卡内基梅隆大学的科学家合作,开发出了一种厚度不足3毫米的可变形塑料材料,这种低成本的“皮肤”有望加速“元宇宙”愿景的实现。该材料具有高度的灵活性和响应性,能够模拟真实皮肤的触感,为虚拟现实和增强现实技术提供更加沉浸式的体验。 ... [详细]
    • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
    • Web自动化测试:表单提交与页面跳转的高效实现
      Web自动化测试:表单提交与页面跳转的高效实现 ... [详细]
    • Issue with the Reserved Term HOSTS in System Configuration ... [详细]
    • 题目描述非常吸引人。每颗星星可以通过其在窗口的左下角和右上角位置构建两条扫描线,从而将问题转化为区间增减和求最大值的操作。需要注意的是,位于边界的星星不应计入结果,因此在处理时应分别对左右边界进行适当的增减调整。此外,利用线段树和离散化技术可以显著提高算法效率,确保在大规模数据下的性能表现。 ... [详细]
    author-avatar
    手机用户2502929821
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有