• 单文件的文件上传详细解释


    本人在慕课网上发现的一个比较好的关于文件上传的视频教程,分享给大家。http://www.imooc.com/learn/219

    以下实例为来自单文件的文件上传的代码

    <?php 
    header('content-type:text/html;charset=utf-8');
    $fileInfo=$_FILES['myFile'];
    $maxSize=2097152;//允许的最大值
    $allowExt=array('jpeg','jpg','png','gif','wbmp');//利用数组设置文件的扩展名
    $flag=true;//检测是否为真实图片类型
    //1.判断错误号
    if($fileInfo['error']==0){
        //判断上传文件的大小
        if($fileInfo['size']>$maxSize){
            exit('上传文件过大');
        }
        //$ext=strtolower(end(explode('.',$fileInfo['name'])));
        $ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
        if(!in_array($ext,$allowExt)){//in_array()来判断是否在数组里面
            exit('非法文件类型');
        }
        //判断文件是否是通过HTTP POST方式上传来的
        if(!is_uploaded_file($fileInfo['tmp_name'])){
            exit('文件不是通过HTTP POST方式上传来的');
        }
        //检测是否为真实的图片类型
        if($flag){
            if(!getimagesize($fileInfo['tmp_name'])){//getimagesize()获取指定图片的信息  检测的是临时文件
                exit('不是真正图片类型');
            }
        }
        $path='uploads';
        if(!file_exists($path)){
            mkdir($path,0777,true);
            chmod($path,0777);
        }
        //确保文件名唯一,防止重名产生覆盖
        $uniName=md5(uniqid(microtime(true),true)).'.'.$ext;//uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID
        //echo $uniName;exit;
        $destination=$path.'/'.$uniName;
        if(@move_uploaded_file($fileInfo['tmp_name'],$destination)){
            echo '文件上传成功';
        }else{
            echo '文件上传失败';
        }
    }else{
        //匹配错误信息
        switch($fileInfo['error']){
            case 1:
                echo '上传文件超过了PHP配置文件中upload_max_filesize选项的值';
                break;
            case 2:
                echo '超过了表单MAX_FILE_SIZE限制的大小';
                break;
            case 3:
                echo '文件部分被上传';
                break;
            case 4:
                echo '没有选择上传文件';
                break;
            case 6:
                echo '没有找到临时目录';
                break;
            case 7:
            case 8:
                echo '系统错误';
                break;
        }
    }
  • 相关阅读:
    G-sensor驱动分析
    写i2c_client驱动的两种方式
    TP分析
    JAVA基础知识要点
    springboot-线程池简单使用
    java 实现好看的图形验证码
    正则表达式校验15/18位生份证-JAVA版
    springboot2.X集成HttpClient 发送HTTPS 请求
    linux-修改时区时间
    springboot2.X 在项目启动后执行一段自定义代码
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5153628.html
Copyright © 2020-2023  润新知