程序运行截图如下:
选择文件然后点击提交后:
目录下也有了:
源码如下:
index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>文件上传</title>
- </head>
- <body>
- <form action="uploadFile.php" method="post" enctype="multipart/form-data">
- <label for="file">文件名: </label>
- <input type="file" name="file" id="file"><br>
- <input type="submit" value="提交">
- </form>
- </body>
- </html>
uploadFile.php
- <?php
- $allowed = array("gif", "png", "jpg");
- $temp = explode(".", $_FILES["file"]["name"]);
- $extension = end($temp);
- echo $_FILES["file"]["size"];
-
- 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"] < 2048000)
- && in_array($extension, $allowed)){
-
- if($_FILES["file"]["error"] > 0){
-
- echo "错误 : " . $_FILES["file"]["error"] . "<br>";
- header("Refresh:3;url=index.html");
- }
-
- echo "上传的文件名: " . $_FILES["file"]["name"] . "<br>";
- echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
- echo "文件大小: " . $_FILES["file"]["size"] . "<br>";
- echo "文件临时存放位置:" . $_FILES["file"]["tmp_name"] . "<br>";
-
- if(file_exists("upload" . $_FILES["file"]["name"])){
-
- echo $_FILES["file"]["name"] . "文件已经存在。";
- }
- else{
-
- move_uploaded_file($_FILES["file"]["tmp_name"], __DIR__ . "\\upload\\" . $_FILES["file"]["name"]);
- echo "文件存储在: " . __FILE__ . "\\upload\\" . $_FILES["file"]["name"];
- }
- }
- else{
-
- header("Refresh:3;url=index.html");
- }
- ?>
需要注意的地方:
①$_FILES
从中可以知道,他是一个全局的变量,与快要被废弃的$HTTP_POST_FILES功能一样。在使用post方法上传文件时常用。
②move_uploaded_file
从中可以知道,这个函数的功能是把上传的文件拷贝到本地,第一个参数是上传的文件,第二个参数是要移动到拿。返回值是个bool类型,如果第一个参数是无效的文件名,函数将返回false,并且不会生效,还会打印warning。
③__DIR__
从中可知,这个宏是获取当前文件的目录这个宏等同于dirname(__FILE__)