php封装文件上传函数

本文介绍了如何在PHP中封装一个文件上传的函数,详细讲解了上传过程中的关键步骤,包括文件验证、错误处理和实际的文件移动操作,旨在提供一个安全且易于使用的文件上传解决方案。

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

/**
 * Created by PhpStorm.
 * User: 17839
 * Date: 2020/3/23
 * Time: 10:54
 */
header("Content-type: text/html; charset=utf-8");

/** 文件上传
 * @param $file 接受的文件 $_FILES['file']
 * @param $mime 允许上传文件的类型
 * @param $maxSize 允许上传的最大文件
 * @param $filepath 保存文件的目录
 * @return string
 */
function upload ($file, $mime, $maxSize, $filePath) {
    switch ($file['error']) {
        case 1:
            return '文件超出了php.ini限制';
        case 2:
            return '文件超出了html限制';
        case 3:
            return '文件部分上传';
        case 4:
            return '没有选择文件';
        case 6:
            return '服务器内部错误';
        case 7:
            return '服务器内部错误';
    }
    // 判断用户提交的文件是否合法
    if (!in_array($file['type'], $mime)) {
        exit('上传的文件类型不合法');
    }
    //上传文件的最大尺寸
    if ($file['size'] > $maxSize) {
        exit('上传的文件太大');
    }
    $tmp = $file['tmp_name'];
    // 文件名
    $fileName = getRandName(6);
    // 获取文件的扩展名
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
    $basename = $filePath . $fileName . '.' . $ext;
    // 上传成功,返回拼接的文件
    if (move_uploaded_file($tmp, $basename)) {
        return $basename;
    }
}


// 随机获取一段字符串,作为文件的名字
function getRandName($num)
{
    $str = 'ABCDEFGHIJKLMNOPQRSTUVWSYZzbcdefghijklmnopqrstuvwxyz0123456789';
    $str = str_shuffle($str);
    $str = substr($str, 0, $num);
    return $str;
}

// 调用
$file = $_FILES['file'];
$mime = ['image/jpeg', 'image/jpg', 'image/pjpeg', 'image/png', 'image/gif'];
$maxSize = 1024 * 1024 * 3;
$filepath = './image/';

upload($file, $mime, $maxSize, $filepath);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值