Blogger Information
Blog 34
fans 0
comment 1
visits 23376
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0828作业:文件操作及目录操作
Samoye
Original
551 people have browsed it

作业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

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post