PHP文件系统之多图上传和下载

前台部分:

upload.php

<?php
	header("content-type:text/html; charset=utf8");
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="multiupload.php" method="post" enctype="multipart/form-data">
		上传文件:<input type="file" name="pic[]"><hr/>
		 上传文件:<input type="file" name="pic[]"><hr/>
		上传文件:<input type="file" name="pic[]"><hr/> 
		<input type="submit" value="上传">
	</form>
	<a href="download.php">下载</a>
</body>
</html>
思路:name=pic[]数组

文件上传函数:enctype="multipart/from-data"

multiupload.php部分

<?php
	header("content-type:text/html;charset=utf-8");
	//多文件上传
	$data=multiupload($info);
	echo "<pre>";
	var_dump($data);
	var_dump($info);
	echo "</pre>";
	function multiupload(&$info,$dir="./uploads/",$name='pic',$size=3000000,$allow_mime=array('image/png','image/jpeg','image/gif','image/png','image/jpeg','image/gif','image/wbmp'),$allow_ext=array('gif','jpeg','jpg','png','bmp')){
		//组装数组
		foreach ($_FILES[$name] as $key => $val) {
			foreach ($val as $k => $v) {
				$data[$k][$key]=$v; 
			}
		}
		foreach($data as $key=>$upfile){
			//判断错误
			if($upfile['error']>0){
				switch($upfile['error']){
					case 1:
						$info[$key]="文件太大,超出,php.ini里upload_max_filesize设定值";
						continue;
					case 2:
						$info[$key]="超出了html表单的预设值限制";
						continue;
					case 3:
						$info[$key]="上传终端";
						continue;
					case 4:
						$info[$key]="没有上传文件";
						continue;
					case 6:
						$info[$key]="临时文件夹找不到了";
						continue;
					case 7:
						default:
						$info[$key]="临时文件夹已满或者是磁盘已满";
						continue;
				}
			}
			//判断文件大小
			if($upfile['size']>$size){
				$info[$key]="文件太大";
				continue;
			}
			//判断文件的mime类型
			if(!in_array($upfile['type'],$allow_mime)){
				$info[$key]="检查你的文件类型是否允许,允许类型为:".join(",",$allow_mime);
				continue;
			}
			//判断文件的扩展名
			$ext=pathinfo($upfile['name'],PATHINFO_EXTENSION);
			if(!in_array($ext, $allow_ext)){	
				$info[$key]="你的扩展名不允许,允许的扩展名为:".join(",",$allow_ext);
				continue;
			}
			//新建目录
			if(!file_exists($dir)){
				mkdir($dir,0755,true);
			}
			//新建文件的随机名
			$name=md5(time().mt_rand()).".".$ext;
			//执行移动(核心代码)
			if(is_uploaded_file($upfile['tmp_name'])){
				if(move_uploaded_file($upfile['tmp_name'], $dir."/".$name)){
					$info[$key]="文件上传成功";
				//保存信息
				$data[$key]=array('name'=>$upfile['name'],'new_name'=>$name,'ext'=>$ext,'size'=>$upfile['size'],'mime'=>$upfile['type']);
				}
			}
		}
		return $data;
	}
文件下载部分:download.php部分

<?php
	$file="./uploads/1.jpg";
	//1,通知浏览器文件的类型
	header("content-type:image/jpeg");
	//2,通知浏览器的大小
	header("content-length:".filesize($file));
	//3,通知浏览器以文件的形式显示文件
	header('Content-Disposition:attachment;filename='.basename($file));

	//4,输出文件
	readfile($file);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值