PHP实现文件的上传

来源:互联网 发布:淘宝频现违规刀具 编辑:程序博客网 时间:2024/06/05 12:01

通过PHP将文件上传到服务器
1、先创建一个上传表单:index.php

<html><head><meta charset="utf-8"><title>PHP实现文件上传</title></head><body><form action="upload.php" method="post" enctype="multipart/form-data"><label for="file">文件名:</label><input type="file" name="file" id="file"><br><input type="submit" name="submit" value="提交"></form></body></html>

2、创建上传脚本

<?php// 允许上传的图片后缀$allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explode(".", $_FILES["file"]["name"]);echo $_FILES["file"]["size"];$extension = end($temp);     // 获取文件后缀名if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/jpg")|| ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb&& in_array($extension, $allowedExts)){    if ($_FILES["file"]["error"] > 0)    {        echo "错误:: " . $_FILES["file"]["error"] . "<br>";    }    else    {        echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";        echo "文件类型: " . $_FILES["file"]["type"] . "<br>";        echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";        echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";        // 判断当期目录下的 upload 目录是否存在该文件        // 如果没有 upload 目录,你需要创建它,upload 目录权限为 777        if (file_exists("upload/" . $_FILES["file"]["name"]))        {            echo $_FILES["file"]["name"] . " 文件已经存在。 ";        }        else        {            // 如果 upload 目录不存在该文件则将文件上传到 upload 目录下            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);            echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];        }    }}else{    echo "非法的文件格式";}?>

3、另一种实现方法(上传头像为例,思想来自于最近的一个项目)

    //实现文件(用户头像)的上传    if($_SESSION['user_id']==''){        //如果用户的ID为空,说明没有登录        //实现跳转的两种方式        header('Location:login.php');        //echo '<script>window.location.href='"login.php"'</script>';    }    print_r($_FILES);    $fileError='';                        //错误类型    $allowedExit = array(                   //允许上传的文件格式        'jpg',        'png',        'gif',        'bmp',        'jpeg',        );        if ($_FILES['face'] == '') { //上传文件为空    echo '没有上传';} else {        if ($_FILES['face']['error'] == 0) {     //错误代码为0,表示上传的文件没有错误        $ext = strtolower(pathinfo($_FILES['face']['name'],PATHINFO_EXTENSION));        //$ext 提取上传文件的后缀        //strtolower()函数将所有后缀转化为小写        //pathinfo() 函数以数组的形式返回文件路径的信息        //PATHINFO_DIRNAME - 只返回 dirname(路径)        // PATHINFO_BASENAME - 只返回 basename(文件名)        // PATHINFO_EXTENSION - 只返回 extension(后缀)        //eg.<?php        //print_r(pathinfo("/testweb/test.txt",PATHINFO_BASENAME));        //输出:test.txt        print_r($ext);        if (!in_array($ext,$allowExtArray)) {            $fileError .= '上传格式不被允许';        }else {            if (!is_dir('uploads')) { //判断uploads文件夹是否存在                mkdir('uploads'); //创建uploads文件夹            }            $newFileName = date('Y-m-d H:i:s',time()).rand(0,100000);//给上传的文件改名字 以时间为格式 仿制同一时间传 后面加一个随机数            move_uploaded_file($_FILES['face']['tmp_name'],'uploads/'.$newFileName.'.'.$ext);            //move_uploaded_file() 函数将上传的文件移动到新位置 将要上传的文件保存到uploads文件夹下        }    } else {        switch ($_FILES['face']['error']) {   //如果上传的文件有错误进行报错            case '1':                $fileError = '上传文件大小超过服务器允许上传的最大值';                break;            case '2':            $fileError = '上传文件大小超过HTML表单中隐藏域MAX_FILE_SIZE选项指定的值';                break;     // 0——没有错误发生,文件上传成功。      // 1——上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。      // 2——上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。      // 3——文件只有部分被上传。      // 4——没有文件被上传。         }        echo '发生错误:'.$fileError;    }}print_r($_SESSION);