登录  /  注册
博主信息
博文 19
粉丝 0
评论 0
访问量 16228
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
自定义异常类来处理上传过程以及各种错误 20191012
努力拼搏----赵桂福的博客
原创
711人浏览过

对于之前的学习的异常类,在电脑练习了多边才大概的掌握,看来很多事情多实践才管用。老师说的对,多写多练啊。

下面是操作过程的实例。

实例

<?php
use \Exception;
?>
<!--请求类型必须是: post-->
<!--数据编码类型: 使用复合类型,通知服务器上传的是文件类型-->
<form action="demo4.php" method="post" enctype="multipart/form-data">
    <input type="file" name="my_file" id="">
    <input type="hidden" name="MAX_FILE_SIZE" value="3145728">
    <button>上传</button>
</form>

<?php
//自定义异常类
class testException extends Exception
{
    public function __construct($message = "", $code = 0)
    {
        parent::__construct($message, $code);
    }
    //自定义错误信息
    public function errorInfo(){
        //heredoc 输出大段的html代码
        return <<<"ERROR"
           <div>
           <h3>~出错!错误代码:{$this->getCode()}</3>
<p>错误提示信息:{$this->getMessage()}</p></div>
ERROR;

    }
}
////下面是课堂老师的案例
try{
   // 文件上传
// PHP使用一个超全局变量:$_FILES 来处理文件上传
// 1. 配置上传参数
// 允许上传的文档类型
$fileType = ['jpg', 'jpeg', 'png', 'gif'];
// 设置允许上传的文件最大长度
$fileSize = 3145728;
// 上传到服务器上的指定的目录
$filePath = '/uploads/';
// 原始的文件名
$fileName = $_FILES['my_file']['name'];
// 上传到服务器上的临时文件名
$tempFile = $_FILES['my_file']['tmp_name'];
// 2. 判断文件是否上传成功?
//$_FILES['my_file']['error'], 0: 表示成功,大于1出错
$uploadError = $_FILES['my_file']['error'];
if ($uploadError > 0) {
    switch ($uploadError) {
        case 1:
        case 2:throw new testException('上传文档不允许超过3M','1001');
        case 3: throw new testException('上传文件不完整','5003');
        case 4: throw new testException('没有文件被上传','1300');
        default: throw new testException('未知错误','1500');
    }
}
        $extension = explode('.', $fileName)[1];
        if (!in_array($extension, $fileType)) {
            throw new testException('不允许上传' . $extension . ' 文件类型','10043');
        }
        
        // 4. 为了防止同名覆盖, 将上传的文件重命名: md5+时间戳
        $fileName = date('YmdHis',time()).md5(mt_rand(1,99)). '.' . $extension;
        
        // 5. 上传文件
        if (is_uploaded_file($tempFile)) {
            if (move_uploaded_file($tempFile, __DIR__. $filePath.$fileName)){
                echo '<script>alert("上传成功");history.back();</script>';
            } else {
                throw new testException('文件无法移动到指定目录, 请检查目录权限','9887');
            }
        } else {
            throw new testException('非法操作','40002');
        }
        
        exit();

    
    
} catch(namespace\testException $e){
    echo $e->errorInfo();
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

【总结】课堂时间有限,最重要的线下的不断联系。遇到困难要去解决。谢谢 php老师辛苦的付出!~

批改状态:合格

老师批语:太客气了, 直播的过程中,老师也会出现一些失误, 与你们的区别在于可以快速找到问题并解决它... 所以, 出现bug不必担心, 反而是提升自己的机会来了
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学