实例
<!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>
运行实例 »
点击 "运行实例" 按钮查看在线实例