博客列表 >4月19日——文件上传

4月19日——文件上传

时光记忆的博客
时光记忆的博客原创
2018年04月20日 16:57:13691浏览

HTML文件:demo6.html

实例

<!-- 
	1.文件上传的请求类型必须是POST
	2.允许的数据类型必须是:multipart/form-data

	如果想在当前页面处理上传的话,action可能会有三种写法
	1.最懒的方法,空:默认当前脚本
	2.使用当前文件名:demo6.php
	3.最酷的方法:
 -->
<!-- <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post" enctype="multipart/form-data"> -->

<form id="upload" action="demo7.php" method="post" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="542488">
	<fieldset>
		 <legend align="center">文件上传</legend>
		 <p><strong>选择文件:</strong><input type="file" name="upload"></p>
	</fieldset>
	<p align="center"><button type="button" name="submit">上传</button></p>
</form>

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	
</body>
</html>
<script src="../js/jquery-3.3.1.js"></script>
<script>
	$('button:first').on('click', function(){
		// alert('aaa')
		var upload = new FormData($("#upload")[0]);
		$.ajax({
			url:'demo7.php',
			type:'POST',
			cache: false,
			dataType:'json',
			data:upload,
          // 下面三个参数要指定,如果不指定,会报一个JQuery的错误 
      cache: false,  
            contentType: false,  
            processData: false,  
			success:function($res){
				if($res.status == 1){
					alert($res.message)
				}
				else{
					alert($res.message)
				}
			}
		})
	})
</script>

运行实例 »

点击 "运行实例" 按钮查看在线实例

php文件:demo7.php

实例

<?php

	// echo '<pre>'
	// print_r($_FILES['upload']);

	// $_FILES:它是一个二维数组
	// $_FILES['当前上传文件的控件名称,input[name="upload"]']

	// $_FILES['upload']['name']:文件原始名称
	// $_FILES['upload']['type']:文件类型
	// $_FILES['upload']['size']:文件大小
	// $_FILES['upload']['tmp_name']:服务器上的临时文件夹
	// $_FILES['upload']['error']:错误代码
	 
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
		 // echo 100;
		//1.检测是否有文件被上传
		if(isset($_FILES['upload'])){
			//2.设置一下允许上传的类型
			
			$allow = ['image/jpg', 'image/jpeg', 'image/png'];

		    if(in_array(@$_FILES['upload']['type'], $allow)){
		    	//将用户上传文件上传到指定的临时目录:move_uploaded_file()
		    	if(move_uploaded_file($_FILES['upload']['tmp_name'], "upload/{$_FILES['upload']['name']}") ){
		    		//上传成功
		    		echo json_encode(array('status'=>1, 'message'=>'上传成功'));
					exit();
		    	}
		    }else{
		    	echo json_encode(array('status'=>1, 'message'=>'仅允许上传jpeg/jpg/png格式的图片'));
					exit();
		    }
		}else{
			echo json_encode(array('status'=>1, 'message'=>'没有文件上传/未知错误'));
			exit();
		}
		
		/*//如果上传失败
		if(@$_FILES['upload']['error'] > 0){
			
			echo '<p>错误原因是:<strong>';

			switch ($_FILES['upload']['error']) {
				case '1':
					echo '文件超过php.ini中大小';
					break;
				case '2':
					echo '文件超过表单设置的大小';
					break;
				case '3':
					echo '文件上传不完整';
					break;	
				case '4':
					echo '没有文件被上传';
					break;
				case '6':
					echo '没有临时文件夹';
					break;
				case '8':
					echo '上传意外被终止';
					break;
				default:
					echo '未知错误';
					break;
			}

			// echo '</strong></p>';
			// //保险起见,最好手工把临时目录下面的文件清空,系统也会在会话结束的时候被清空
			// ig(file_exists($_FILES['upload']['tmp_name']))
		}*/
	}else{
		echo json_encode(array('status'=>1, 'message'=>'上传类型错误'));
		exit();
	}
	

?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议