博客列表 >0419文件上传和文件操作

0419文件上传和文件操作

田亢的博客
田亢的博客原创
2018年04月23日 17:43:04827浏览

文件操作实例

<?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







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