Blogger Information
Blog 32
fans 0
comment 0
visits 19972
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0419文件上传和文件操作
田亢的博客
Original
833 people have browsed it

文件操作实例

<?php
/**
 * Created by PhpStorm.
 * User: tiankang
 * Date: 2018/4/21
 * Time: 14:03
 */
//1.创建或打开一个本地文件
//以只读方式打开文件,不会创建新文件  r+(读写),指针在开头
//$fl = fopen('file2.txt','r') or die('打开失败');

//以w(只写)方式打开文件,如文件不存在则创建, w+(读写),指针在开头

//$fl  = fopen('file5.txt','w') or die('打开失败');

//以a(追加只写)方式打开文件,如文件不存在则创建, 类似: a+(追加读写),指针在未尾
//$fl = fopen('file3.txt','a') or die('打开失败了');

//2.打开一个远程文件
$fl = fopen('http://www.runoob.com/php/php-file.html','r') or die('失败');

//feof()函数检测是否已经到达文件末尾 在循环遍历未知长度的数据时,feof()函数很有用
if (feof($fl)){
    echo '文件结尾';

}
//3.读取文件到浏览器
//从文件指针处读取一行并自动下移,fgets()函数用于从文件中逐行读取文件
//while($s =  fgets($fl)){
//    print $s;
//}
//fgetss()可过滤掉所有的HTML标签


//4. 逐字符读取文件:
//while(!feof($fl)){
//    echo fgetc($fl);
//
//}

//将整个页面读入到一个字符串,这在抓取其它网站内容时很有用,配合过滤正则
//file_get_contens($filename)返回字符串

//$content = file_get_contents('http://www.php.cn');
//// echo '文件大小: '.strlen($content).' 字节', '<br>';
//echo '文件大小:'.strlen($content).'字节','<br>';
//
//if (strlen($content)>0){
//    echo $content;
//}



//5. 把整个文件读入到数组中,用换行符进行分割
//$arr = file('maxim.txt');
//
//foreach ($arr as $key => $value){
//
//    echo '<span style="color: red">格言'.($key+1).':  </span>'.$value.'<hr>';
//
//}

// shuffle($arr),随机打乱一个数组,返回true/false
//if (shuffle($arr)){
//    echo current($arr);
//
//}
//
//fclose($fh);
//目录遍历操作

//传统目录函数
//第一步:opendir('目录')打开目录,成功返回资源,失败返回false
//第二步:readdir($dir)读取目录内容,成功
//返回目录名,失败返回false
//第三步:colsedir($dir)关闭当前目录

//$dir = opendir('../0418源码') or die('打开失败');
//while(false != ($file = readdir($dir))){
//
//    if ($file !='.' && $file !='..'){
//        print $file.'<br>';
//    }
//}
//closedir($dir);
//echo '<hr style="color:red;">';
//第二种方式 把目录内容保存到数组中进行遍历
//第一步:scandir()
//第二步:遍历目录数组


//$fileArr = scandir('../0417源码');
//foreach ($fileArr as $key=>$value){
//    if ($value != '.' && $value != '..'){
//        echo $value,'<br>';
//
//    }
//}
//目录迭代器
//第一种方式: DirectorInterator:
//第一步:实例化目录对象
//第二步:遍历目录

$file = new DirectoryIterator('../0416源码');
foreach ($file as $dir){

     print $file->getPathname()."<br>";


     if (!$dir->isDot()){ //仅过滤掉点目录文件,目录仍保留

         echo $file->getPathname(),'<br>';

     }
}
echo '<hr style="color: red">';
//第二种方式
//递归目录迭代器 RecursiveDirectoryIterator
//重复递归迭代器 RecursiveIteratorIterator
$dir = new RecursiveDirectoryIterator('../0417源码');

foreach (new RecursiveIteratorIterator($dir) as $file){

    if ($file ->isFile()){//只显示文件

        echo $file->getPathname(),'<br>';

    }

}

//1.分解文件名

//系统常量
echo __FILE__ ,'<br>';   //获取文件路径

//1.获取文件名
echo '文件名:' .basename(__FILE__).'<br>';
//2.获取目录名
echo '目录名:'.dirname(__FILE__).'<br>';

//php5.3+推荐使用常量__DIR__代替dirname()
echo __DIR__, '<br>';
//3.pathinfo():将目录名,文件名,扩展或解析到一个数组中
$pathInfo = pathinfo(__FILE__);

foreach ($pathInfo as $key=>$value){
    echo $key.'->'.$value , '<br>';

}
//系统提供一个常量:DIRECTORY_SEPARATOR,可以根据系统自动确定路径分隔符类型

$path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__);
echo $path,'<br>';


//删除文件
//unlink('file2.txt') or die('删除失败');
//复制文件
copy('maxim.txt','../0419源码/maxim01.txt') or die('复制失败');

//更名
rename('maxim01.txt','格言.txt') or  die('重命名失败');


//创建目录
//mkdir('admin1');

//移动文件
//rename('格言.txt','/admin1/');

//删除目录

//rmdir('admin1');

运行实例 »

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


文件上传

实例

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>


<form action="<?php htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post" enctype="multipart/form-data">

    <fieldset>
        <legend align="center">
            文件上传
        </legend>
        <label for="file">文件名:</label>
        <input type="file" name="file" id="file"><br>
    </fieldset>
    <p align="center">
        <input type="submit" name="submit" value="提交">
    </p>


</form>
</body>
</html>
<?php
/**
 * Created by PhpStorm.
 * User: tiankang
 * Date: 2018/4/23
 * Time: 15:56
 */
/*
 *
    $_FILES["file"]["name"] - 上传文件的名称
    $_FILES["file"]["type"] - 上传文件的类型
    $_FILES["file"]["size"] - 上传文件的大小,以字节计
    $_FILES["file"]["tmp_name"] - 存储在服务器的文件的临时副本的名称
    $_FILES["file"]["error"] - 由文件上传导致的错误代码

 */
//允许上传的图片的后缀
$allowedExts = array('gif','jpeg','jpg',);

//把选中的文件名拆成数组
$tempArr = explode('.',$_FILES['file']['name']);
//取出后缀名
$extensionName = end($tempArr);
//判断选中的文件格式是否符合要求

if ((($_FILES["file"]["type"] == "image/gif")||
    ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))&& in_array($extensionName,$allowedExts)){

    if ($_FILES['file']['error']>0){
    echo '错误'.$_FILES['file']['error'].'<br>';

    }else{
    echo '上传文件名:'.$_FILES['file']['name'].'<br>';
    echo '文件类型:'.$_FILES['file']['type'].'<br>';
    echo '文件大小:'.($_FILES['file']['size']/1024).'kb<br>';
    echo '文件临时存贮的位置:'.$_FILES['file']['tmp_name'].'<br>';

    //判断当前目录下的upload目录是否存在文件
///如果没有upload目录,就需要创建它,
        if (file_exists('upload/'.$_FILES['file']['name'])){
            echo $_FILES['file']['name'].'文件已经存在';
        }else{
            //如果upload目录不存在该文件则将文件上传到upload目录下
            move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$_FILES['file']['name']);
            echo '文件存储在:'.'upload/'.$_FILES['file']['name'];
            //上传成功
            echo "<script>alert('文件上传成功')</script>";

        }


    }
}else{
    //上传成功
    echo "<script>alert('非法的文件格式')</script>";
    echo '非法的文件格式';
}

运行实例 »

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

屏幕快照 2018-04-23 17.42.52.png







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