PHP个人练习——2019/11/21

文件上传

首先我们建立一个html文件,并将其命名为form.html。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>文件上传</title>
</head>
<body>
    <form action="upload_file.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>

然后我们在建立一个php文件,将其命名为upload_file.php,与form.html中的form action="upload_file.php"对应。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>upload_file</title>
</head>
<body>
    <?php
    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"];
    }
    ?>
</body>
</html>

输出显示如下:
form.html的输出显示
上传文件
对上传的文件没有类型限制

在输出时出现了一些问题,比如我们在调试的时候,应当调试的文件是html文件,而不是php文件,如果我们调试php文件,即upload_file.php文件,就会出现以下内容:
显然是错误的
接下来我们要对上传的文件进行限制,用户只能上传gif,jpeg,png,jpg文件,且文件的大小必须小于200kb。

我们将这个文件命名为form_v2.html,是form.html的升级版本。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>文件上传v2</title>
</head>
<body>
    <form action="upload_file_v2.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>

我们再创建一个名为upload_file_v2的php文件,这个文件是upload_file.php的升级版,升级了对上传文件的限制。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>upload_file_v2</title>
</head>
<body>
    <?php
    //允许上传的图片扩展名
    $allowedExts=array("gif","jepg","jpg","png");
    $temp=explode(".",$_FILES["file"]["name"]);
    $extension=end($temp);
    if((($_FILES["file"]["type"]=="image/gif")
        ||($_FILES["file"]["type"]=="image/jepg")
        ||($_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)//小于200kb
       && 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目录,则需要创建,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 "非法的文件格式!";
    }
    ?>
</body>
</html>

输出结果如下:
上传文件,并将其保存在服务器内
上传除图片格式以外的文件

在书写这段代码的时候也出现了一些问题,比如我最开始写的文件名为upload_php_v2.php,但是在html中写的却是,form action=“upload_file_v2.php”,文件名对不上,所以出现了问题。
因此我们在书写文件名的时候,一定要注意文件名要写的简洁,需要让人明白这个文件所实现的基本功能是什么,否则就会出现我所出现的问题。
除此以外,我们在调试这段代码时还出现了一些问题,比如,我们在上面的代码里面写了这样的一段:

	//判断当期目录下的upload目录不存在该文件,则将文件上传到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"];
            }

这段代码实现的功能就是,在htdocs文件夹里的upload文件夹里上传文件。
但是如果我们没有在htdocs中创建upload文件夹,文件就会报错:

错误出现在找不到upload文件夹
为了解决这个问题,我们只需要在htdocs中创建一个upload文件夹即可。
upload文件夹的建立上传成功

总结:没什么好说的,继续努力吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值