Blogger Information
Blog 19
fans 0
comment 0
visits 16745
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
自定义异常类来处理上传过程以及各种错误 20191012
努力拼搏----赵桂福的博客
Original
738 people have browsed it

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

下面是操作过程的实例。

实例

<?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老师辛苦的付出!~

Correction status:qualified

Teacher's comments:太客气了, 直播的过程中,老师也会出现一些失误, 与你们的区别在于可以快速找到问题并解决它... 所以, 出现bug不必担心, 反而是提升自己的机会来了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post