标签:
公共函数库:functions.php
1 <?php 2 //文件上传函数 3 4 /** 5 * 文件上传函数 6 * @param string $path 定义文件上传到的路径 7 * @param array $upfile 上传文件的详细信息 8 * @param array $typeList 允许上传的文件类型 9 ($typeList = array("image/jpeg","image/png","image/gif");) 10 * @param int $maxSize 允许上传的最大文件大小(默认为0,表示不限制大小) 11 * return array $res 返回文件上传成功或失败的信息(数组中info存放上传文件成功或失败的信息 12 error为false,表示上传失败!error为true表示上传成功) 13 * $res = array( 14 "info"=>"", 15 "error"=>false 16 ); 17 */ 18 19 function upload($path,$upfile,$typeList=array(),$maxSize=0){ 20 //定义存放返回信息的数组 21 $res = array( 22 "info"=>"", 23 "error"=>false 24 ); 25 26 // 格式化文件上传路径信息 27 $path = rtrim($path,"/")."/"; 28 29 //1.判断上传文件的错误号 30 if($upfile[‘error‘]>0){ 31 switch($upfile[‘error‘]){ 32 case 1:$info = "表示上传文件的大小超出了约定值!";break; 33 case 2:$info = "表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值。";break; 34 case 3:$info = "表示文件只被部分上传!";break; 35 case 4:$info = "表示没有上传任何文件。";break; 36 case 6:$info = "表示找不到临时文件夹。";break; 37 case 7:$info = "表示文件写入失败。";break; 38 default:$info = "未知的文件上传你错误!";break; 39 } 40 $res[‘info‘] = "上传失败!原因:".$info; 41 return $res; 42 } 43 44 //2.判断文件的上传类型是否合法 45 if(@$typeList && count(@$typeList)>0){ 46 47 //判断用户上传的文件类型是否包含在服务器允许的类型之中 48 if(!in_array($upfile[‘type‘],$typeList)){ 49 $res[‘info‘] = "上传失败!原因:不被允许的上传文件类型!"; 50 return $res; 51 } 52 }else{ 53 $res[‘info‘] = "上传失败!原因:服务器没有设定允许上传的文件类型!"; 54 return $res; 55 } 56 57 //3.判断上传文件的大小是否合法 58 if($maxSize>0 && $upfile[‘size‘]>$maxSize){ 59 $res[‘info‘] = "上传失败!原因:上传文件大小越界!"; 60 return $res; 61 } 62 63 //4.随机一个文件名称 64 $pathinfo = pathinfo($upfile[‘name‘]); //获取上传那文件的文件名的详细信息 65 $ext = $pathinfo[‘extension‘]; //获取文件后缀名 66 do{ 67 $newname = date("YmdHis",time()).rand(1000,9999).".".$ext; //拼装随机文件名 68 }while(file_exists($path.$newname)); 69 70 //5.执行上传文件的移动 71 if(is_uploaded_file($upfile[‘tmp_name‘])){ 72 73 //判断上传文件移动是否成功 74 if(move_uploaded_file($upfile[‘tmp_name‘],$path.$newname)){ 75 $res[‘info‘] = $newname; 76 $res[‘error‘] = true; 77 return $res; 78 }else{ 79 $res[‘info‘] = "上传失败!原因:移动上传文件失败!"; 80 return $res; 81 } 82 83 }else{ 84 $res[‘info‘] = "上传失败!原因:不是有效的上传文件!"; 85 return $res; 86 } 87 } 88 89 90 /** 91 * 图像的等比例缩放函数 92 * @param string $path 图片进行缩放之后的存储路径(原图也在这个目录下) 93 * @param string $picname 图片的名称(你要进行缩放的图片的名称) 94 * @param int $maxw 图片缩放之后的最大宽度 95 * @param int $maxh 图片缩放之后的最大高度 96 * @param string $pre 图片缩放之后存储的新图片的前缀名 97 * return bool TRUE 图片缩放成功之后返回布尔型真 True 98 */ 99 function imageResize($path,$picname,$maxw=100,$maxh=100,$pre="s_"){ 100 //1.准备画布 101 //判断是否传入了合法的路径和图片名称 102 if(empty($path) || empty($picname)){ 103 return false; 104 } 105 106 //格式化一下路径信息 107 $path = rtrim($path,"/")."/"; 108 109 //获取图片的详细信息 110 $info = getimagesize($path.$picname); 111 112 //判断图片的类型,并生成相应的图片画布 113 switch($info[2]){ 114 case 1: //gif 115 $oldImg = imagecreatefromgif($path.$picname); 116 break; 117 case 2: //jpeg 118 $oldImg = imagecreatefromjpeg($path.$picname); 119 break; 120 case 3: //png 121 $oldImg = imagecreatefrompng($path.$picname); 122 break; 123 } 124 125 //获取原图的宽高 126 $oldw = imagesx($oldImg); 127 $oldh = imagesy($oldImg); 128 129 //判断原图的宽高,并进行比例的计算 130 if($oldw>$oldh){ 131 //求得比例 132 $bl = $oldw/$maxw; 133 //计算缩放之后的宽高 134 $neww = $oldw/$bl; 135 $newh = $oldh/$bl; 136 }else{ 137 //求得比例 138 $bl = $oldh/$maxh; 139 //计算缩放之后的宽高 140 $neww = $oldw/$bl; 141 $newh = $oldh/$bl; 142 } 143 144 //根据缩放之后的新的宽高,来生成一张新的画布 145 $newImg = imagecreatetruecolor($neww,$newh); 146 147 //2.开始绘画 148 imagecopyresampled($newImg,$oldImg,0,0,0,0,$neww,$newh,$oldw,$oldh); 149 150 //3.输出图像 151 //判断原图的类型,并执行相应类型的输出 152 switch($info[2]){ 153 case 1: //gif 154 imagegif($newImg,$path.$pre.$picname); 155 break; 156 case 2: //jpeg 157 imagejpeg($newImg,$path.$pre.$picname); 158 break; 159 case 3: //png 160 imagepng($newImg,$path.$pre.$picname); 161 break; 162 } 163 164 //4.释放资源 165 imagedestroy($oldImg); 166 imagedestroy($newImg); 167 168 return true; 169 } 170 ?>
公共菜单栏:menu.php
1 <h1>在线相册管理系统</h1> 2 <a href=‘./index.php‘>添加相册</a> | 3 <a href=‘./show.php‘>查看相册</a> 4 <hr/>
主页:index.php
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>在线相册管理系统</title> 5 <meta charset="utf-8"/> 6 </head> 7 <body> 8 <center> 9 <?php 10 require("./menu.php"); 11 ?> 12 <h2>添加相册</h2> 13 <form action="doAdd.php" method="post" enctype="multipart/form-data"> 14 标题:<input type="text" name="title" /><br/><br/> 15 封面:<input type="file" name="upic" /><br/><br/> 16 <input type="submit" value="添加"/> 17 <input type="reset" value="重置"/> 18 </form> 19 </center> 20 </body> 21 </html>
添加页:doAdd.php
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>在线相册管理系统</title> 5 <meta charset="utf-8"/> 6 </head> 7 <body> 8 <center> 9 <?php 10 require("./menu.php"); 11 ?> 12 <h2>添加相册</h2> 13 <?php 14 //执行相册添加的过程 15 //引入公共函数库 16 require("./functions.php"); 17 18 //定义必须的变量 19 $path = "./uploads"; 20 $upfile = $_FILES[‘upic‘]; 21 $typeList = array("image/jpeg","image/png","image/gif"); 22 $maxSize = 0; 23 24 //执行上传 25 $res = upload($path,$upfile,$typeList,$maxSize); 26 27 //判断是否上传成功 28 if($res[‘error‘]==false){ 29 die($res[‘info‘]); 30 } 31 32 //获取上传成功之后的文件名 33 $picname = $res[‘info‘]; 34 35 //将图片进行等比例缩放 36 imageResize($path,$picname,100,100,"s_"); 37 imageResize($path,$picname,300,300,"m_"); 38 39 $data = array(); 40 //将相册的信息存入pic.db数据库文件(标题,图片原名,图片新名,类型,大小,添加时间) 41 $data[‘title‘] = $_POST[‘title‘]; 42 $data[‘oldname‘] = $_FILES[‘upic‘][‘name‘]; 43 $data[‘newname‘] = $picname; 44 $data[‘type‘] = $_FILES[‘upic‘][‘type‘]; 45 $data[‘size‘] = $_FILES[‘upic‘][‘size‘]; 46 $data[‘time‘] = date("Y-m-d H:i:s",time()); 47 48 //将数据使用##进行拼装,并按@@对每条信息进行拼装 49 $contents = implode("##",$data)."@@"; 50 51 //将拼装好的相册信息存入数据库文件 pic.db 52 file_put_contents("./pic.db",$contents,FILE_APPEND); 53 54 //告诉用户,添加相册成功! 55 echo "恭喜,添加成功!"; 56 echo "<a href=‘show.php‘>返回查看</a>"; 57 ?> 58 </center> 59 </body> 60 </html>
显示页:show.php
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>在线相册管理系统</title> 5 <meta charset="utf-8"/> 6 </head> 7 <body> 8 <center> 9 <?php 10 require("./menu.php"); 11 ?> 12 <h2>查看相册</h2> 13 <table border=‘1‘ width="1000"> 14 <tr> 15 <th>标题</th> 16 <th>图片名</th> 17 <th>类型</th> 18 <th>大小</th> 19 <th>时间</th> 20 <th>操作</th> 21 </tr> 22 <?php 23 //将数据库中的所有数据读出来 24 $contents = file_get_contents("./pic.db"); 25 26 //去掉右侧多余的@@ 27 $contents = rtrim($contents,"@@"); 28 29 //按@@进行拆分 30 $list = explode("@@",$contents); 31 32 //遍历拆分以一条数据 33 foreach($list as $k=>$v){ 34 if(!empty($v)){ 35 //按每一条用##进行拆分 36 $list = explode("##",$v); 37 38 //将数据放入表格 39 echo "<tr align=‘center‘>"; 40 echo "<td>{$list[0]}</td>"; 41 echo "<td><a href=‘./uploads/{$list[2]}‘><img src=‘./uploads/s_{$list[2]}‘/></a></td>"; 42 echo "<td>{$list[3]}</td>"; 43 echo "<td>{$list[4]}</td>"; 44 echo "<td>{$list[5]}</td>"; 45 echo "<td> 46 <a href=‘doDel.php?k={$k}&picname={$list[2]}‘>删除</a> 47 <a href=‘downLoad.php?filetype={$list[3]}&oldname={$list[1]}&size={$list[4]}&newname={$list[2]}&‘>下载</a> 48 </td>"; 49 echo "</tr>"; 50 }else{ 51 echo "<tr><td colspan=‘6‘ align=‘center‘>没有查到任何数据</td></tr>"; 52 } 53 } 54 55 ?> 56 </table> 57 </center> 58 </body> 59 </html>
删除页:doDel.php
1 <?php 2 //执行相册信息的删除 3 4 //从pic.db数据库中取出所有的信息 5 $contents = file_get_contents("./pic.db"); 6 7 //去掉右侧的@@ 8 $contents = rtrim($contents,"@@"); 9 10 //将相册信息按每条拆分开 11 $list = explode("@@",$contents); 12 13 //获取要删除的数据的下标 14 $k = $_GET[‘k‘]; 15 16 //获取要删除的文件名 17 $picname = $_GET[‘picname‘]; 18 19 //删除指定下标的信息 20 unset($list[$k]); 21 unlink("./uploads/".$picname); 22 unlink("./uploads/s_".$picname); 23 unlink("./uploads/m_".$picname); 24 25 //判断我们相册信息是否还有 26 if(count($list)>0){ 27 //将每条相册信息按@@拼装 28 $contents = implode("@@",$list)."@@"; 29 //覆盖写回到数据库 30 file_put_contents("./pic.db",$contents); 31 }else{ 32 //将数据库信息置空 33 file_put_contents("./pic.db",""); 34 } 35 36 //直接跳回到查看相册信息的页面 37 header("location:show.php"); 38 ?>
下载页:downLoad.php
1 <?php 2 //执行文件下载的页面 3 4 //指定下载文件的类型 5 header("Content-Type: {$_GET[‘filetype‘]}"); 6 7 //指定下载文件的描述信息 8 header("Content-Disposition:attachment;filename=".$_GET[‘newname‘]); 9 10 //指定下载文件的大小 11 header("Content-Length:".$_GET[‘size‘]); 12 13 //将内容输出,以便下载。 14 readfile("./uploads/".$_GET[‘newname‘]); 15 16 ?>
标签:
原文地址:http://www.cnblogs.com/yexiang520/p/5557979.html