PHP文件上传及注意事项

  1.form表单通过action指向php页面进行提交

  下面是form.html页面

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="upload_file.php" method="post" enctype="multipart/form-data" id="form-data">
        <label for="file">请选择要上传的文件</label>
        <input type="file" name="file" id="file">
        <input type="submit" name="sub" value="上传">
    </form>
</body>
</html>

  form的enctype属性是用来规定发送到服务器之前应该如何对表单进行编码,默认值为application/x-www-form-urlencoded,会对所有数据字符进行编码,但是如果要表单包含上传大文件,则必须改为multipart/form-data,即不对数据字符编码。

 

  2.点击上传提交到php页面处理文件

  下面是upload_file.php页面

<?php
header("content_type: text/html;charset=utf-8");//规定编码格式为utf-8
$allowedExts = array("txt");    //包含允许上传的文件的后缀名的数组
$temp = explode(".", $_FILES["file"]["name"]);    
$extension = end($temp);    //获取文件的后缀名
if($_FILES["file"]["type"] == "text/plain" && 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"]."<br>";
        echo "文件临时存储位置:".$_FILES["file"]["tmp_name"]."<br>";
        if(file_exists("/home/acer/下载/upload/".$_FILES["file"]["name"])){    //判断文件是否存在
            echo $_FILES["file"]["name"]."文件已存在。";
        }else{
            move_uploaded_file($_FILES["file"]["tmp_name"], "/home/acer/下载/upload/".$_FILES["file"]["name"]);        //存储文件
            echo "文件存储在:"."/home/acer/下载/upload/".$_FILES["file"]["name"]."<br>";
        }
    }

}else{
    echo "非法大文件格式"."<br>";
}

  其中“/home/acer/下载/upload/”是存储文件夹的跟路径,

  “text/plain”是文件类型,详见https://www.cnblogs.com/wang1204/p/5644827.html

 效果如下

   

  

 

posted @ 2018-05-23 09:09  黑山大胖子  阅读(234)  评论(0编辑  收藏  举报