上传文件案例服务器端限制

<form action="do.php" method = "post" enctype = "multipart/form-data">
        <!-- <input type="hidden" name="MAX_FILE_SIZE" value="123456"> 限制文件大小 -->
        <!-- <input type="file" name = "myfile" accept="image/jpeg,image/jpg,image/png,audio/flac"> 限制文件类型-->
                <input type="file" name = "myfile">
                <input type="submit" value="提交">
</form>
--------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
/**接收$_FILES的文件信息 */
// print_r($_FILES);
$file = $_FILES['myfile'];
$maxsize = 209410520; //允许文件最大值 20M
$extall = array('bmp','jpg','png','tif','gif','pcx','tga','exif','fpx','svg','psd','cdr','pcd','dxf','raw','WMF','webp');
// $flag = true;   /**检测是否是真是的文件类型 */

 

/**判断错误号 0或者UPLOAD_ERR_OK为成功 */
if($error==UPLOAD_ERR_OK)
{
    if($file['error']>$maxsize){
        exit("文件过大");
    }
    $ext = pathinfo($file['name'],PATHINFO_EXTENSION);
    // print_r($ext);die;
    if(!in_array($ext,$extall)){
        exit("非法文件类型");
    }
    if(!is_uploaded_file($file['tmp_name'])){
        exit("文件不是 HTTP POST 方式上传的");
    }
    $path = "uploads";
    if(!file_exists($path)){
        mkdir("uploads",0777,true);
        chmod($path,0777);
    }
    /**检测是否是真是的图片类型 */
    // if($flag){
        if(!getimagesize($file['tmp_name'])){
            exit('不是真实的图片类型');
        }
    // }

 

    /**确保文件名字不重复 */
    $uname = md5(uniqid(microtime(true),true)) .'.'. $ext;
    $filePath = $path . '/' . $uname;
    if(@move_uploaded_file($file['tmp_name'],$filePath)){
        echo "文件 ".$file['name']." 上传成功";
    }else{
        echo "文件 ".$file['name']." 上传失败";
    }

 

}else{
    /**匹配错误信息 */
    switch($file['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;
    }
}
posted @ 2021-05-08 16:51  小※兽  阅读(114)  评论(0编辑  收藏  举报