PHP文件上传操作 代码

作者: JONE 分类: PHPer 发布时间: 2017-08-05 00:33

510

upload.html部分

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>上传功能练习</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="image" />
    <input type="submit" value="上传文件" />

</form>
</body>
</html>

upload.php部分

<?php 
header("content-type:text/html;charset=utf-8");


/*var_dump($_FILES);
die;*/

//var_dump($file);
$name=$_FILES['image']['name'];   //原文件名
$type=$_FILES['image']['type'];   //源文件类型
$temp=$_FILES['image']['tmp_name'];   //源文件上传所存储的临时文件夹路径+临时文件名
$error=$_FILES['image']['error'];  //获取的错误的提示
$size=$_FILES['image']['size'];   // 上传文件的字符节大小


    // 判断文件上传的错误类型
    switch ($error) {
        case '1':
            echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";
            break;
        case '2':
            echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";
            break;
        case '3':
            echo "文件只有部分被上传";
            break;
        case '4':
            echo "没有文件被上传";
            break;
        case '6':
            echo "找不到临时文件夹";
            break;
        case '7':
            echo "文件写入失败";
            break;
        /*case '0':
            echo "文件上传成功";*/
    }


    //判断文件大小是否超限
    if($size>3145728){
        die("单个文件限制最大3M以内");
    }

    //判断上传的文件的类型是否符合要求(根据文件后缀判断)
    $allow=array('image/jpeg','image/png','image/jpg','image/gif'); //允许上传的文件类型
    if(!in_array($type, $allow)){
        echo "上传的文件类型不正确,"."允许上传文件类型有".implode(',',$allow);
        die;
    }

    //判断上传文件的实际文件类型是否符合要求(根据文件的MIME类型进行判断)
    $finfo=finfo_open(FILEINFO_MIME_TYPE);
    $mime=finfo_file($finfo,$temp);
/*    var_dump($finfo);
    var_dump($mime);
    exit;*/
    if(!in_array($mime,$allow))
    {
        die("文件的MIME类型不合法");
        
    }



    //获取源文件后缀名
    $suffix=strrchr($name,".") ;  //通过字符串strrchr()函数获取源文件的文件后缀名
    
    //重命名 生成一个随机名字的函数 文件名 = 当前时间 + 随机的几位数字+文件后缀名
    $new_name=date('YmdHis').'-'.mt_rand(1000,9999).$suffix;

    

    //移动临时文件保存到指定文件夹并添加重命名

    $path= 'image/';   //文件存储路径 同级目录下的image文件夹
    $str=$path.$new_name;   //拼接文件路径+文件名+文件名后缀
    $result=move_uploaded_file($temp,$str);
    if($result){
        echo "文件上传成功 文件名为 $new_name";
    }else{
        echo "文件上传失败";
    }


 ?>