PHP常用方法:文件上传

发布于 2019-06-20  60 次阅读


首先创建一个文件上传表单
upload.html

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

定义一个方法对文件上传信息进行操作
upload.php

//上传文件信息
$fileInfo = $_FILES['file'];
//允许上传的文件格式
$fileExt = ['txt','doc','docx','pdf','xsl','xslx','mp4','mp3','jpg','png','gif'];
function upload_file($fileInfo,$upload = "./upload",$fileExt){
    if($fileInfo['error']===0){
        $ext = strtolower(pathinfo($fileInfo['name'],PATHINFO_EXTENSION));   //获取已上传文件的后缀并将后缀转换为小写
        //判断上传的文件是否符合允许上传的文件格式
        if(!in_array($ext,$fileExt)){
            return '非法文件类型';
        }
        //如果没有上传文件目录则创建
        if(!is_dir($upload)){
            mkdir($upload,0777,true);
        }
        //以当前时间毫秒数为文件名,注意这里md5()的作用是编码,并非加密
        $fileName = md5(uniqid(microtime(true),true)).".".$ext;
        $destName = $upload ."/".$fileName;
        if(!move_upload_file($fileInfo['tmp_name'],$destName)){
            return '文件上传失败!';
        }
        return '文件上传成功!';
    }else{
        swith(!$fileInfo['error']){
            case 1:
                return '上传的文件超过了php.ini中 upload_max_filesize 选项限制的值';
                break;
            case 2:
                return '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
                break;
            case 3:
                return '文件只有部分被上传';
                break;
            case 4:
                return '没有文件被上传';
                break;
            case 6:
                return '找不到临时文件夹';
                break;
            case 7:
                return '文件写入失败';
                break;
        }
    }
}
var_dump(upload_file($fileInfo));

非宅无以为乐