博客列表 >0828作业:文件操作及目录操作

0828作业:文件操作及目录操作

Samoye
Samoye原创
2018年09月02日 23:28:32552浏览

作业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的文件';
}

运行实例 »

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

本地运行截图
html.png

费图片.png

错误提示.png

成功.png


* 总结:
* 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>';
    }
}

运行实例 »

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

本地运行截图:

遍历.png

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