博主信息
博文 18
粉丝 0
评论 0
访问量 16536
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
异常的重写、文件的上传、模型与数据表关联对应实现类与数据表的映射-2019-10-12
无聊了的博客
原创
729人浏览过

1、写一个异常的实现上传文件

实例

<!--upload.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传附件</title>
</head>
<body>
<form action="index.php" method="post" enctype="multipart/form-data">
    <input type="file" name="my_file" value="选择文件">
    <button>上传</button>
</form>
</body>
</html>


<!--//index.php-->

<?php
namespace _1012;
use Exception;

class UploadException extends Exception
{
    public function __construct($message = "", $code = 0, Throwable $previous = null)
    {
        parent::__construct($message, $code, $previous);
    }
    public function errInfo(){
        $result = [
            'code'=>$this->getCode(),
            'message'=>$this->getMessage()
        ];
        return $result;
    }
}

try{
    $fileExt = ["jpg","png","jpeg"];
    $file = $_FILES["my_file"];
    $fileName = $file["name"];
    $tmpName = $file["tmp_name"];
    $newPath = __DIR__.'/img/';
    $errCode = $file["error"];

    if($errCode>0){
        switch ($errCode){
            case 1:
            case 2:
                throw new UploadException('上传文件多大','104');
            case 3:
                throw new UploadException('文件上传不完整','105');
            case 4:
                throw new UploadException('没有文件上传','106');
            default:
                throw new UploadException('未知错误','107');
        }
    }
    $fileType = explode('/',$file["type"])[1];
    $newFileName = time().'_'.mt_rand().'.'.explode('.',$fileName)[1];
    if(!in_array($fileType,$fileExt)){
        throw new UploadException('文件类型不符','101');
    }

    if(is_uploaded_file1($tmpName)){
        if(move_uploaded_file($tmpName,$newPath.$newFileName)){
            echo '<script>alert("上传成功")</script>';
        }else{
            throw new UploadException('文件无法移动到指定目录请检查权限','102');
        }
    }else{
        throw new UploadException('非法上传','103');
    }
}catch (UploadException $e){
     print_r($e->errInfo());
}

运行实例 »

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


批改状态:合格

老师批语:作业没有写完整
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

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