通过 PHP,可以把文件上传到服务器。里面加入一些图片的判断,如果不加判断文件的类型就可以上传任意格式的文件。
为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的网站源码,全部救变成他的了,直接打包看你的代码。所以一定要控制上传的目录与文件类型,一般只可以上传图片。
要实现文件上传图片我们需要写出两个php文件,第一个php文件我们需要写出一个文件上传的页面,
第二个php文件我们写出实现图片上传的功能
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>无标题文档</title> 6 </head> 7 8 <body> 9 10 <h1>文件上传</h1> 11 <form action="upload.php" method="post" enctype="multipart/form-data"> 12 <input type="file" name="file" /> 13 <input type="submit" value="上传" /> 14 </form> 15 </body> 16 </html>
1 <?php 2 var_dump($_FILES["file"]); 3 4 限制文件的类型 5 限制文件的大小 6 防止文件名重复 7 8 一.防止文件名重复 9 1.修改文件名 10 流水号,时间戳+随机数+用户名 11 12 2.建文件夹 13 upload/20170317/lch/shangchuan/11.jpg 14 15 3.保存文件 16 17 if($_FILES["file"]["error"]) 18 { 19 echo $_FILES["file"]["error"]; 20 } 21 else 22 { 23 没有出错 24 25 加限制条件 26 if(($_FILES["file"]["type"]=="image/png" || $_FILES["file"]["type"]=="image/jpeg") && $_FILES["file"]["size"]<1024000) 27 { 28 29 防止文件名重复 30 $filename = "./img/".time().$_FILES["file"]["name"]; 31 32 转码 33 $filename = iconv("UTF-8","gb2312",$filename); 34 35 36 if(file_exists($filename)) 37 { 38 echo "该文件已存在"; 39 } 40 else 41 { 42 保存文件 43 move_uploaded_file($_FILES["file"]["tmp_name"],$filename); 44 } 45 } 46 else 47 { 48 echo "文件类型不对"; 49 } 50 }
注释:对于 IE,识别 jpg 文件的类型必须是 pjpeg,对于 FireFox,必须是 jpeg。
保存被上传的文件
上面的例子在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本。
这个临时的复制文件会在脚本结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:
上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。