作业1:文件上传与检测
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传操作</title> </head> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for = "file">Filename:</label>> <input type="file" name="file" id="file"> <br> <!--这里的file 就是upload_file.php 中$_FILE 中第一维的名称--> <input type="submit" name="submit" value="提交"> </form> </body> </html>
点击 "运行实例" 按钮查看在线实例
<?php // 判断上传的是图片文件且小于1048576字节 if (($_FILES['file']['type'] == 'image/gif') ||($_FILES['file']['type']=='image/jpeg') ||($_FILES['file']['type']=='image/pjpeg') && ($_FILES['file']['size'] <1048576)) { if($_FILES["file"]["error"]>0){ echo 'error:'.$_FILES['file']['error'].'<br>';//如果有错误输出错误信息 } else{ echo 'upload:'.$_FILES['file']['name'].'<br>';//没错误,输出文件名 文件类型;大小,存储的位置 echo 'type:'.$_FILES['file']['type'].'<br>'; echo 'size:'.($_FILES['file']['size']/1024).'kb<br>'; echo 'Stored in:'.$_FILES['file']['tmp_name']; // 下面检测文件是否存在并转移到指定位置 if (file_exists('upload/'.$_FILES['file']['name'])){ echo $_FILES['file']['name'].'文件已经存在啦!'; } else{ move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$_FILES['file']['name']); echo '存储在:'.'upload/'.$_FILES['file']['name'].'<br>';//将文件从临时位置移动到指定目录 } } }else{ echo '请选择图片格式且小于1MB的文件'; }
点击 "运行实例" 按钮查看在线实例
本地运行截图
* 总结:
* 1.调用PHP脚本提交处理时,用htmlspecialchars()进行把HTML标签转换成实体
* 2.form 表单要启用文件上传 enctype = 'multipart/form-data'
* 3.文件上传后,要从临时目录转移到指定目录,move_upload_file()
* 4.有同学遇到中文乱码的问题,在没有做文件过滤前也遇到了,做了上传限制,直接报错了。
* 5.$_FILE 是个二位数组,第一个属性就是当前文件上传控件的名称,这里用file代替了;
* 第二维就是上传文件的属性了,常用的属性如下:
* $_FILES["file"]["name"] – 被上传文件的名称
$_FILES["file"]["type"] – 被上传文件的类型
$_FILES["file"]["size"] – 被上传文件的大小,以字节计
$_FILES["file"]["tmp_name"] – 存储在服务器的文件的临时副本的名称
$_FILES["file"]["error"] – 由文件上传导致的错误代码
6.$_FILES["file"]["error"]中的["error"]值情况:
UPLOAD_ERR_OK
0:没有错误发生,文件上传成功
UPLOAD_ERR_INI_SIZE
1:上传的文件超过了 php.ini中upload_max_filesize(默认情况为2M) 选项限制的值
UPLOAD_ERR_FORM_SIZE
2:上传文件的大小超过了 HTML表单中MAX_FILE_SIZE选项指定的值
UPLOAD_ERR_PARTIAL
3:文件只有部分被上传
UPLOAD_ERR_NO_FILE
4:没有文件被上传
5:传文件大小为0
7.用于上传的文件类型:
1、 图片文件 image/gif,image/jpg,image/jpeg,image/png,image/x-png
2、纯文本和HTML text/txt,text/plain,text/html
3、二进制文件 application/octet-stream
4、音频格式 audio/basic
5、视频格式 video/mpeg
作业2:目录遍历
<?php /** * 目录遍历操作: * 1. 传统过程函数: opendir(),readdir(),closedir() * 2. 目录扫描器: scandir()scandir — 列出指定路径中的文件和目录 */ // 用传统函数遍历目录试试 /*$dir = "../0827"; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { print $file."<br>"; } closedir($dh); } }*/ $dir = '../0827'; if(is_dir($dir)){ //判断是不是目录 if($dh = opendir($dir)){ while (($file = readdir($dh)) !== false){ //如果打开的目录不空 if ($file != '.' && $file !='..'){ //过滤掉.. print $file."<br>"; } } closedir($dh); } } echo '<hr>'; //scandir() 返回的是个数组 $dirArr = scandir('../0827/',1); //按字母倒叙排列 foreach ($dirArr as $file){ if($file != '.' && $file !='..'){ echo $file,'<br>'; } }
点击 "运行实例" 按钮查看在线实例
本地运行截图: