美文网首页
7.php文件系统

7.php文件系统

作者: dwy_interesting | 来源:发表于2020-05-27 10:04 被阅读0次

文件处理

文件处理包含文件的打开/关闭文件、读取数据、和写入数据等

1. 打开/关闭文件

fopen() -- 打开文件
fclose() -- 关闭文件
举个栗子:

<?php
    //打开文件
   $file = fopen("test.txt", "r");
   //关闭文件 -- 关闭文件前需打开文件,并使用打开文件时定义的指针作为参数
   fclose($file);
?>

2.从文件中读取数据

(1)读取整个文件

readfile() -- 读入一个文件并将其写入输出到缓冲中
file() -- 读取整个文件内容,按行存放到数组中,包含换行符在内
file_get_contents() -- 将整个文件录入一个字符串,适用于二进制对象
举个栗子:

<?php
   readfile("test.txt");    //读入一个文件并将其写入输出到缓冲中
   $f = file("test.txt");   //读取整个文件内容,按行存放到数组中,包含换行符在内
   foreach($f as $count){
      echo $count;
   }
   $f = file_get_contents("test.txt");   //将整个文件录入一个字符串,适用于二进制对象
   echo $f;
?>

(2)读取部分数据

fgets() -- 一次读取一行数据
fgetc() -- 读取指定字符,单字节
fread() -- 读取任意长度的字符串
举个栗子:

<?php
   $f = fopen("test.txt", "rb");
   while(!feof($f)){
      echo fgets($f);  //一次读取一行数据
   }
 
    fgetc($f);  //读取一个字符,单字节

    echo fread($f,6);  //读取任意长度的字符串
?>

3.将数据写入文件 -- fwrite()/file_put_contents()

举个栗子:

<?php
   //将数据写入文件
   $f = fopen("test.txt", "wb");
   fwrite($f, "Hello world!");

   //将数据写入文件
   file_put_contents($f, "Hi world!");
   //读取文件检查是否写入成功
   readfile($f);
?>

目录处理

目录处理包括打开目录、浏览目录和关闭目录。
opendir() -- 打开目录
closedir() -- 关闭目录
举个栗子:

<?php
   //打开目录
   $path = "D:\\phpstudy_pro\\www";
   if(is_dir($path)){
      if($dir = opendir($path))
         echo $dir;
   }else{
      exit();  //退出
   }
   //关闭目录
   closedir($dir); 
?>

scandir() -- 浏览目录
举个栗子:

<?php
   //浏览目录
   $path = "D:\\phpstudy_pro\\www";
   if(is_dir($path)){
      $dir = scandir($path);
      foreach($dir as $value){
         echo $value."<br>";
      }
   }else{
      echo "目录路径错误";
   }
?>

文件上传

文件上传可以使用HTTP协议来实现,要使用文件上传功能,有四个步骤:

1.客户端的设置(表单的设置)

1)<input type='file' name='自定义'>
2)表单的提交方式必须为post
3)form表单上面加上 enctype="multipart/form-data"
举个栗子:

<html>
<body>

<form action="test.php" method="post"  enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
image.png

2.在php.ini配置文件中对上传功能做一些设置

1)file_uploads = On 是否允许上传

2)upload_max_filesize = 2M PHP允许的最大上传文件大小

3)post_max_size = 8M 限制通过post方法可以接收的数据的大小。
post_max_size一定要大于upload_max_filesize

4)upload_tmp_dir = "XXXX" 上传文件后的临时目录。

3、上传后的数据使用$_FILES来进行接收。

$_FILES中的每个元素的意思
name=>上传的文件名
type=>mime类型,用来设定某种扩展名的文件用一种应用程序来打开的方式,当扩展名称文件被访问时,浏览器会自动指定应用程序打开。
tmp_name=>上传时的临时文件名,文件上传结束后,生成的临时文件默认将存储在临时文件目录中。。
size=>文件的大小 以字节为大小单位。
error=>上传的错误号
如其值为 0,没有错误发生,文件上传成功
如其值为 7,文件写入失败
......

举个栗子:

<?php
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"];
  }
?>

4.使用move_uploaded_file()函数实现上传功能

举个栗子:

<?php
if ($_FILES["file"]["error"] > 0){
      echo "Return Code: " . $_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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
      
      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
   }
?>

文件下载

借助于http的下载:如果浏览器能够识别该文件,则直接进行解析,如果不能识别那么它将提供下载
直接告诉浏览器这是一个下载文件,不要进行解析
1、header('content-type:text/html;charset=utf-8');//设置字符集
2、header('content-disposition:attachment');//告诉它是一个下载文件(附件)
3、header('content-disposition:attachment;filename=xxxxx');//告诉它是一个附件并且给出文件名(是在第2点的基础上加上的)
4、将所有的文件内容读取出来,否则会没有内容
5、告诉浏览器这个文件有多大 header('content-length:文件的大小');
举个栗子:

<?php

$file = 'down.zip';

if (file_exists($file)) {
   $file1 = fopen ($file, "rb" );
    header('Content-Type: application/octet-stream');//告诉浏览器这是一个文件流格式的文件
    //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    Header ( "Accept-Ranges: bytes" ); //请求范围的度量单位 
    header('Content-Length: ' . filesize($file));//Content-Length是指定包含于请求或响应中数据的字节长度 
    readfile($file1);
    exit;
}
?>

相关文章

  • 7.php文件系统

    文件处理 文件处理包含文件的打开/关闭文件、读取数据、和写入数据等 1. 打开/关闭文件 fopen() -- 打...

  • 7.PHP变量

    逻辑运算符 and &&当两边同时为true才成立 not ! xor 两边一个是true一个是false or|...

  • 7.PHP 控制结构(二)

    continue 语句 continue 在循环结构用来跳过本次循环中剩余的代码并在条件求值为真时开始执行下一次循...

  • 7.PHP表单传值

    思考:Web2.0的显著特点信息共建,也就是用户可以将自己想要分享的数据提交给服务器端。但是用户能够看到的是最终的...

  • 第8章 管理文件系统(不是很懂的一章)

    8.1 探索Linux文件系统 8.1.1 基本的Linux文件系统 ext文件系统扩展文件系统(extended...

  • 文件系统

    第12章:文件系统 文件系统概念文件系统和文件文件描述符目录文件别名文件系统种类 虚拟文件系统 文件缓存和打开文件...

  • 文件系统管理

    目录: 文件系统 创建文件系统 mkfs mke2fs 修改ext格式的参数 查看文件系统信息 修复文件系统 1、...

  • Linux运维之道(14)——Linux文件系统管理

    @(Linux)[文件系统管理] 1. 文件系统 1.1 各个操作系统上的文件系统 Linux文件系统 ext2 ...

  • Linux命令学习手册-fsck

    fsck [-aANPrRsTV][-t <文件系统类型>][文件系统...] 功能 检查文件系统并尝试修复错误。...

  • Docker镜像加载原理

    1.1 UnionFS(联合文件系统)UnionFS(联合文件系统): Union文件系统(UnionFS)是一种...

网友评论

      本文标题:7.php文件系统

      本文链接:https://www.haomeiwen.com/subject/xssmahtx.html