博客列表 >0828-文件、目录操作,文件名操作,文件上传与检测

0828-文件、目录操作,文件名操作,文件上传与检测

3期-Shawn的博客
3期-Shawn的博客原创
2018年09月03日 17:04:49702浏览

实例

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>0828作业</title>
</head>
<body>
	<h2>作业1编程: 文件上传与检测</h2>
	<!-- action的值为空:"",默认就是提交到当前页面的php脚本处理,和$_SERVER['PHP_SELF']的作用一样,不过"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>"  这样处理更加安全。 

		enctype的属性:multipart/form-data。  不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。-->

	<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" 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="submit" name="submit" >上传</button></p>

	</form>

	<?php
	$var = $_SERVER['PHP_SELF'];
	echo $var,'<br>';

	$var1= $_SERVER['REQUEST_METHOD'];//访问页面时的请求方法
	echo $var1,'<br>';
	echo '<hr>';



	?>


	<?php
	//检测请求类型是否POST,如果不是应该提示用户类型不对
	if ($_SERVER['REQUEST_METHOD'] == 'POST') 
	{
		//检测是否有文件被上传
		if (isset($_FILES['upload'])) 
		{
			//文件可以上传,设置允许上传的文件类型
			$allow = ['image/jpg','image/jpeg', 'image/png'];
			//in_array() 函数搜索数组中是否存在指定的值。
			if (in_array($_FILES['upload']['type'], $allow))
			{
				//将文件先移动到临时目录

				//move_uploaded_file(file,newloc);函数将上传的文件移动到新位置。
				//file:规定要移动的文件。    newloc:规定文件的新位置。
				//$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名
				if (move_uploaded_file($_FILES['upload']['tmp_name'], "upload/{$_FILES['upload']['name']}"))
				{
					echo "<script>alert('文件上传成功')</script>";
				}else
				{
					echo "<script>alert('文件上传失败')</script>";
				}
			}else
			{
				echo "请检查文件格式是否为jpg、jpeg、png";
			}
		}else
		{
			//echo "文件没有被上传";

			// 对上传错误进行处理
		    if ($_FILES['upload']['error'] > 0 ) {
			echo '<p>错误原因是:<strong>';

			// $_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。
			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 7:
					echo '磁盘已满,写入失败';
					break;
				case 8:
					echo '上传意外中止';
					break;
				
				default:
					echo '系统未知错误';
					break;
			}

			echo '</strong></p>';

			// 保险起见,最好把创建的临时文件删除,当然系统也会在结束会话时自动清空

			// file_exists() 函数检查文件或目录是否存在。存在则返回 true,否则返回 false。
			// is_file() 函数检查指定的文件名是否是正常的文件。存在且为正常的文件,则返回 true。
			// unlink() 函数删除文件。若成功,则返回 true,失败则返回 false。
			if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) 
			{
				unlink($_FILES['upload']['tmp_name']);
			}else
			{
				echo "删除临时文件失败";
			}
		}

	}
	}else
	{
		echo "请求类型不对";
	}
echo '<hr>';
	?>


	<h2>作业2编程: 目录遍历</h2>
	<?php 
/*
 * 目录遍历操作: 
 * 1. 传统过程函数: opendir(),readdir(),closedir()
 * 2. 目录扫描器: scandir()
*/

/**
 * 第一种方式: 传统目录函数
 * 
 * 第一步: opendir('目录')打开目录,成功返回资源,失败返回false
 * 第二步: readdir($dir)读取目录内容,成功返回文件名,失败返回false
 * 第三步: closedir($dir)关闭当前目录
 * 
 */
$dir = opendir('../0828') or die('打开失败');
// $dir = opendir('./') or die('打开失败');  
//.或./当前目录
while (false != ($file = readdir($dir)))
{
	if ($file != "." && $file != "..") 
	{      
		print $file."<br>";
    }
}
closedir($dir);

echo '<hr>';

/***********************************************************/

/*
 * 第二种方式:将目录内容保存到数组中进行遍历
 * 第一步:scandir($dir)将目录转数组中保存
 * 第二步:遍历目录数组
*/
//读到一个目录内容到数组中: 
$fileArr = scandir('../0828/');
echo '<pre>';
print_r($fileArr);
echo '<hr>';
foreach ($fileArr as $file) 
{
	if ($file != "." && $file != "..")
	 {
        echo "$file<br>";
     }
}


?>
</body>
</html>

运行实例 »

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


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