通过表单上传图片是网站开发中经常需要的功能,并且为避免相同文件名上传覆盖掉之前的文件还需要将上传的图片重新命名,下面简单介绍一下php中图片上传并重命名的实现原理:
1 <?php 2 //引用文件 3 include('../config/sessionCheck.php'); 4 include('../config/conn.inc.php'); 5 include('../config/func.inc.php'); 6 7 //获取表单提交过来的数据,brandlit为缩略图 8 $brandname = $_POST['brandname']; 9 $letter = $_POST['letter']; 10 $brandlit = $_FILES['brandlit']; 11 12 //取到缩略图图片名 13 $name = $brandlit['name']; 14 15 //以最后一次出现的.字符来获取图片后缀,并将得到的文件名转为小写 16 $type = strtolower(substr($name,strrpos($name,'.')+1)); 17 18 //定义允许上传的图片类型 19 $allow_type = array('jpg','jpeg','gif','png'); 20 21 //判断文件类型是否被允许上传 22 if(!in_array($type, $allow_type)){ 23 return ; 24 } 25 26 //判断是否是通过表单POST上传 27 if(!is_uploaded_file($brandlit['tmp_name'])){ 28 return ; 29 } 30 31 //定义上传文件的存放路径 32 $upload_path = "../upload/images/"; 33 34 //通过反转及分割获取图片的后缀 35 $string = strrev($_FILES['brandlit']['name']); 36 $array = explode('.',$string); 37 $ex = strrev($array[0]); 38 39 //将上传图片重命名为日期加100-999的随机数并加上后缀名 40 $rename = date("Y").date("m").date("d").date("H").date("i").date("s").rand(100, 999).".".$ex; 41 42 //移动图片到指定文件夹 43 if(move_uploaded_file($brandlit['tmp_name'],$upload_path.$rename)){ 44 45 //组合成最终的图片名及完整路径并过滤掉路径前的两个.. 46 $finallit = substr_replace($upload_path,'',0,2).$rename; 47 48 $sql = "insert into brand(brandname,letter,brandlit,dates) values('$brandname','$letter','$finallit',UNIX_TIMESTAMP())"; 49 50 if($rst = mysql_query($sql)){ 51 echo "<script>alert('添加成功!')</script>"; 52 echo "<script>location='listBrand.php'</script>"; 53 }else{ 54 echo "<script>alert('添加失败!')</script>"; 55 echo "<script>location='addBrand.php'</script>"; 56 } 57 58 }else{ 59 echo "<script>alert('添加失败!')</script>"; 60 echo "<script>location='addBrand.php'</script>"; 61 } 62 ?>