文件上传类

本文介绍了一个使用PHP实现的抽象类及其子类用于处理文件上传的过程。该类定义了文件类型验证、大小限制、随机字符串生成等方法,并实现了具体的文件上传逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/2/26
 * Time: 16:29
 */
abstract class aUpLoad
{
    public $allowExt = array('jpg', 'jpeg', 'png', 'rar');
    public $maxSize = 1;//最大上传大小,M为单位
    protected $error = '';//错误信息

    abstract public function getInfo($name);

    abstract public function createDir();

    abstract public function randStr($len = 8);

    abstract public function up($name);

    abstract public function checkType($ext);

    abstract public function checkSize($size);

    public function getError()
    {
        return $this->error;
    }

}

class UpLoad extends aUpLoad
{

    public function getInfo($name)
    {

        return $_FILES[$name];
    }

    public function createDir()
    {
        $dir = 'up/' . date('Y/m', time());
        if (!is_dir($dir)) {
            mkdir($dir, 0777, true);
        }
        return $dir;
    }

    public function randStr($len = 8)
    {
        return md5(time()) . mt_rand(111, 999);
    }

    public function checkType($ext)
    {
        return in_array($ext, $this->allowExt);
    }

    public function checkSize($size)
    {
        return $size < $this->maxSize * 1024 * 1024;
    }

    public function up($name)
    {
        if (!isset($_FILES[$name])) {
            echo '请上传文件';
            exit;
        }

        $info = $this->getInfo($name);
        $ext = ltrim(strrchr($info['name'], '.'), '.');
        if (!$this->checkType($ext)) {
            echo '文件后缀名不正确';
            exit;
        }
        if (!$this->checkSize($info['size'])) {
            echo '文件太大';
            exit;
        }

        $dir = $this->createDir();
        $filename = $this->randStr() . '.' . $ext;
        $path = $dir . '/' . $filename;
        if (move_uploaded_file($info['tmp_name'], $path)) {
            $data['filename'] = $filename;
            return $data;
        }
    }
}

$file = new UpLoad();
$data = $file->up('pic');
var_dump($data);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值