当前位置:Gxlcms > PHP教程 > PHP文件上传的实现及其介绍php文件是什么文件php上传文件代码php文件上传大小设

PHP文件上传的实现及其介绍php文件是什么文件php上传文件代码php文件上传大小设

时间:2021-07-01 10:21:17 帮助过:4人阅读

关于实现及介绍在程序注释中。

提交文件的页面:(可以分别提交到doAction.php、doAction1.php、doAction2.php进行测试)

upload.php




    
    文件上传


    



doAction.php


doAction1.php


doAction2.php

 $maxSize) {
        exit('上传文件过大');
    }

    echo $fileInfo['type']; exit;

    //$ext = strtolower(end(explode('.', $fileInfo['name'])));
    $ext = pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
    if(!in_array($ext, $allowExt)) {
        exit('非法文件类型');
    }

    //判断文件是否是通过HTTP POST方式上传来的
    if(!is_uploaded_file($fileInfo['tmp_name'])) {
        exit('文件不是通过HTTP POST方式上传来的');
    }

    //检测是否为真实的图片类型
    /*
     * getimagesize($filename):得到指定图片的信息,如果是图片返回数组
     * 如果不是图片(哪怕文件的后缀是图片的格式,实际上不是图片的话),返回false。
     */
    if($flag) {
        if(!getimagesize($fileInfo['tmp_name'])) {
            exit('不是真正的图片类型');
        }
    }

    $path = 'uploads';
    //php利用mkdir创建多级目录 http://www.daixiaorui.com/read/38.html
    /*
     * mkdir($path,0777,true);
     * 第一个参数:必须,代表要创建的多级目录的路径;
     * 第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权;
     * 第三个参数:true表示允许创建多级目录。
     */
    /*
     * chmod() 函数改变文件模式。
     * 如果成功则返回 TRUE,否则返回 FALSE。
     */
    if(!file_exists($path)) {
        mkdir($path, 0777, true); // 0777表示可读可写可执行
        chmod($path, 0777);
    }
    //确保文件名位移,放置重名产生覆盖
    /*
     * uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
     * 语法
     * uniqid(prefix,more_entropy)
     * 参数	描述
     * prefix	可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。
     * more_entropy	可选。规定位于返回值末尾的更多的熵。
     */
    /*
     * microtime()返回当前 Unix 时间戳和微秒数。
     * PHP函数microtime()语法
     * microtime(get_as_float)
     * PHP函数microtime()参数与描述
     * get_as_float 如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。
     * 通俗地说,带参数true表明只返回一个浮点数(即秒数),不带参数返回一个微秒+秒的字符串。
     * ";
     * echo microtime(true);
     * ?>
     * 结果如下:
     * 0.00000600 1283757623
     * 1283757623
     */
    $uniName = md5(uniqid(microtime(true), true)) . '.' . $ext;
    //$destination = $path . '/' . $fileInfo['name'];
    $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;
    }
}

以上就介绍了PHP文件上传的实现及其介绍,包括了php文件,文件上传方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行