批改状态:合格
老师批语:
<!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>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号