zoukankan      html  css  js  c++  java
  • 单文件的文件上传详细解释

    本人在慕课网上发现的一个比较好的关于文件上传的视频教程,分享给大家。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;
        }
    }
  • 相关阅读:
    1074 食物链 (并查集)
    2832 6个朋友
    病毒 (拓扑)
    4735 烦人的幻灯片 (拓扑)
    JavaScript中变量的LHS引述和RHS引用
    td自动换行
    SQL Server 中的 NOLOCK 到底是什么意思?
    jQuery中遇到的坑
    jQuery中attr()函数 VS prop()函数
    Javascript刷新页面的几种方法
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/5153628.html
Copyright © 2011-2022 走看看