如何用php实现简单的文件上传功能?(带图解)
如图所示:点击浏览出现选择文件的对话框,将所选文件上传到保存文件的文件。
关键点:文件上传的图解:
代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form method="post" action="chuli.php" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="上传"/> </form> </body> </html>
chuli.php
<?php //读取上传的文件信息,以数组方式返回 $arr = $_FILES["file"]; //var_dump($arr); //以下为输出内容:此处作为注释写在这,便于理解 //array(5) { //["name"]=> 文件名称 //string(5) "7.png" //["type"]=> 文件类型 //string(9) "image/png" //["tmp_name"]=> 文件临时储存的地方 //string(53) "C:\Users\Administrator\AppData\Local\Temp\phpF626.tmp" //["error"]=> 报错:上传没错则为0;有错则会提示错误 //int(0) //["size"]=> 上传文件的大小 //int(18747) //} //上传的文件被保存的文件名,images 为同一目录下要保存上传文件的文件名 $filename="./images/".$arr["name"]; //转换格式,将utf-8转为国标 $filename = iconv("UTF-8","gb2312",$filename); //将文件从临时文件移到保存的文件(核心代码) move_uploaded_file($arr["tmp_name"],$filename); ?>
到此处便可以实现文件的上传功能;但是如我们所知,实际上文件上传时会有很多要求;诸如文件类型,文件大小,文件名是否重复等
所以要对chuili.php进行修改:
<?php $arr = $_FILES["file"]; //加限制条件 if(($arr["type"]=="image/jpeg" || $arr["type"]=="image/png") && $arr["size"]<1024000 ) { //临时文件的路径 //$arr["tmp_name"]; $filename = "./images/".time().$arr["name"]; //保存之前判断该文件是否存在 if(file_exists($filename)) { echo "该文件已存在"; } else { $filename = iconv("UTF-8","gb2312",$filename); move_uploaded_file($arr["tmp_name"],$filename); } } else { echo "上传的文件大小或类型不符合"; }
这样,就基本可以实现文件的上传功能了~~~
要注意的几点:
1、加限制条件从下面几方面加: 1、文件类型 2、文件大小 3、保存的文件名不重复
2、为了防止重复,文件名采取以下措施 1、用户名加时间戳 2、类似网盘,用文件夹分类