Demo entry 6685978

up

   

Submitted by anonymous on Dec 22, 2017 at 06:32
Language: PHP. Code size: 4.0 kB.

<?php
	header("Content-Type:text/html;charset=utf-8");
	//php 文件上传(图片上传)
	//从HTML表单上传一张图片,到服务器(项目文件夹),php处理,把图片路径保存到数据库
	/*
	前端静态页面
	form表单,input框类型是file
	form表单要指定method属性,要把method指定为post form表单的enctype属性指定为multipart/form-data
	一般上传图片会严格控制图片的大小
	使用隐藏域name值等于MAX_FILE_SIZE,设置value的值来限制上传图片的大小(第一种方法)
	
	后台服务端php页面处理
	如果你的文件上传功能实现不了,就要看看php的配置文件php.ini的设置:
	file_uploads  开启 On
	upload_max_filesize 上传文件的最大值(第二种方法)
	post_max_size 整个表单上传数据的大小(第三种方法)
	upload_tmp_dir 上传文件的临时存放路径
	memory_limit指定单个脚本程序可以使用的最大的内存容量
	max_execution_time确定php可以执行的最长时间,以秒为单位
	*/
	//在php接收html提交的图片信息$_FILES
	//print_r($_FILES);
/*
Array
(
    [上传input框的name值] => Array
        (
            [name] => 上传的文件名
            [type] => 上传的文件类型
            [tmp_name] => 上传文件的临时存储文件
            [error] => php提供的错误信息提示状态码
            [size] => 上传的文件大小
        )
)
*/
/*
	php提供的错误信息提示状态码有五个
	1、如果返回0,无报错,上传成功
	2、如果返回1,上传的图片大小超过了upload_max_filesize的大小
	3、如果返回2,上传图片大小超过了MAX_FILE_SIZE的大小
	4、如果返回3,图片没有完全上传成功,例如网络中途断开
	5、如果返回4,没有指定选择图片就直接点提交
*/

	//文件上传函数
	/*
	参数$name 上传file框的name值
	参数$type 上传文件的类型
	参数$size 上传文件的大小
	参数$path 上传文件的保存路径
	*/
	function upload($name,$type=array('jpg','gif','png'),$size=1048576,$path='upload'){
		//1、判断错误值
		$num=$_FILES[$name]['error'];
		if($num>0){
			switch($num){
				case 1:
				return '上传的图片大小超过了upload_max_filesize的大小';
				break;
				case 2:
				return '上传图片大小超过了MAX_FILE_SIZE的大小';
				break;
				case 3:
				return '图片没有完全上传成功';
				break;
				case 4:
				return '没有上传图片';
				break;
			}
		}
		//2、判断上传文件的类型
		//拿到上传文件的后缀
		$pre=pathinfo($_FILES[$name]['name'],PATHINFO_EXTENSION);
		//判断后缀是否在$type数组内
		if(!in_array($pre,$type)){
			return '你上传的图片类型不正确';
		}
		//3、再次判断上传文件的大小
		if($_FILES[$name]['size']>$size){
			return '你上传的图片太大了';
		}
		//4、保存图片
		//先设置永不重名的文件名
		//mt_rand设置随机数
		$filename=date('YmdHis',time()).mt_rand(1000,9999).mt_rand(1000,9999);
		//echo $filename;
		//拼接后缀形成完整的文件名
		$file=$filename.'.'.$pre;
		//把临时文件转移到项目目录转化为图片格式
		if(is_uploaded_file($_FILES[$name]['tmp_name'])){//判断是否有临时文件
			//保存
			move_uploaded_file($_FILES[$name]['tmp_name'],$path.'/'.$file);
			return '图片上传成功|'.$file;
		}else{
			return '图片上传失败';
		}
	}
	// print_r($_FILES);
	if(isset($_FILES['photo']['size'])){//如果有图片提交的情况
		$res=upload('photo');
		// var_dump($res);die;
		$arr=explode('|',$res);
		//print_r($arr);
		//判断图片是否上传成功
		if($arr[0]=='图片上传成功'){
			echo "<script>alert('图片上传成功');</script>";
			$path=$arr[1];//拿到图片的名称
			//把图片名称存入文件内
			file_put_contents('upload.txt', $path);
		}else{//图片没有上传成功
			//echo $arr[0];
			echo "<script>alert('".$arr[0]."');</script>";
			//弹出图片上传失败的原因
		}
	}
	//再把文件内的图片名称读取出来并且输出到页面上
	$img=file_get_contents('upload.txt');
	// echo 'upload/'.$img;
	$img_path='upload/'.$img;

	//读取upload文件夹下的所有图片并组成一个数组
	$arr_dir=scandir('upload');
	//print_r($arr_dir);

	//删除图片功能
	//先接收参数的图片路径
	if(isset($_GET['del_path'])){
		$del_path=$_GET['del_path'];//接收地址栏的del_path参数的值
		echo $del_path;
		unlink($del_path);
		echo "<script>alert('删除成功!');location.href='upload.php';</script>";
	}
?>
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<form action="upload.php" method="post" enctype='multipart/form-data'>
		<input type="file" name="photo" >
		<input type="submit" value="upload">
	</form>
	<!-- <img src="<?php echo $img_path;?>" alt=""> -->
	<?php foreach($arr_dir as $value){
		if($value=='.'||$value=='..'){continue;}
		?>
		<img src="upload/<?php echo $value;?>" alt="">
	<?php }?>
	<script>
	var img=document.getElementsByTagName('img');
	//console.log(img);
	for(var i=0;i<img.length;i++){
		img[i].onclick=function(){
			var res=confirm('你确定要删除吗?');
			if(res){//如果点了确定
				//先拿取当前图片的路径
				var del_path=this.getAttribute('src');
				//alert(del_path);
				location.href="upload.php?del_path="+del_path;
			}
		}
	}
	</script>
</body>
</html>

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).