当前位置:  编程技术>php

PHP 文件系统详解(推荐)

    来源: 互联网  发布时间:2014-10-07

    本文导语:  PHP 文件系统详解,包括打开文件,读取目录,上传下载等。 文件处理函数 1.文件操作.   打开文件:     打开指定的文件时会返回相应的对象,若不存在指定的文件,那麽可能会自动创建这个文件。     resource ...

PHP 文件系统详解,包括打开文件,读取目录,上传下载等。

文件处理函数
1.文件操作.
  打开文件:
    打开指定的文件时会返回相应的对象,若不存在指定的文件,那麽可能会自动创建这个文件。
    resource fopen(string filename,string mode [,int use_include_path][,resource context]);
      filename 可以是包含文件路径的文件名,也可以是某种协议给出的URL(/tech-php/打开远程文件/index.html).为了避免系统切换带来的麻烦,采用'/'作为路径分隔符.
      mode: 设置打开文件的方式,分别有:
           r:只读模式,文件指针位于文件头部.
           r+:只读模式----读/写模式,文件指针位于头部文件.注意可能产生覆盖.
           w:只写模式,文件指针位于文件头部.如果文件存在,删除内容重写;否则,自行创建文件.
           w+:只写模式----读写文件,读/写文件指针指向文件头部.如果文件存在,删除内容重写;否则,自行创建文件.
           x:谨慎写----写模式打开文件,从文件头部开始写如.如果文件存在,返回false,产生一个E_WARNING级别的错误信息
           x+:谨慎写---读写模式代开文件.如果文件存在,返回false,产生一个E_WARNING级别的错误信息
           a:追加,文件指针指向文件尾部.如果文件存在,则直接在文件尾追加;否则,自行创建文件.
           a+:追加,文件指针指向文件尾部.如果文件存在,则直接在文件尾追加或者读取;否则,自行创建文件.
           b:二进制模式.用于与其他模式进行链接.(windows 下的选项)
           t: 用于与其他模式进行结合.(windows 下的选项)
    请慎用fopen()函数,因为一不小心就有可能将文件删除掉.同时,不同的操作系统具有不同的行结束习惯(UNIX:n Windows:rn Macinitosh:r).如果错误的使用行结束符,那么当打开文件时,可能输出一堆乱码.以上可以通过"'t'","'b'"来避免.
读取文件:
  string fgetc(resource handle);//返回从handle指向的文件中的一个字符.如果遇到EOF,则返回false;
  string fgets(int handle[,int length]);//从文件指针指向的位置获取一行字符,并且返回最大为length-1个字节的字符串..文件指针必须有效,且指向一个由fopen()或fsockopen()成功打开的文件.length表示读取的数据的长度.在遇到换行,EOF,或者指定length时结束.忽略length将读到行结束.
  string fgetss(resource handle[,int length][,string allowable_tags]);//读取一行,且过滤掉html,php标记.
  string fread(int handle,int length);//从文件中读取任意长度的数据。,还可以用于读取二进制文件。handle 为指向文件的资源,length 读取length个字节或者遇到EOF时停止执行。
例子:
 

代码示例:

readfile(),file()和file_get_contents()函数.
readfile(),file()和file_get_contents()函数.
  int readfile(string filename[,bool use_include_path,resource context]);//读取一个文件并写入到缓冲区,如果成功,则返回读取的字节数,否则返回false。filename文件名。参数use_include_path控制是否支持在include_path中搜索文件,true为支持。使用readfile函数不需要打开/关闭文件。
  array file(string filename [,bool use_include_path[,resource context]]);//将整个文件的内容读取到数组中。如果成功,返回数组,数组中的每个元素都是文件中对应的一行,包活换行符在内;否则返回false;
  string file_get_contents(string filename[,bool use_include_path[,resource context[,int offset[,int maxlen]]]]);//context 为5.0新增的内容,可以用NULL来忽略。offset,maxlen为5.1的的内容。offset 用于标记文件啓始的位置,maxlen 设置文件读取的长度。该方法适用于二进制文件的读取。是将文件内容读入到一个字符串的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。如果打开有特殊字符的URL(例如存在空格),那麽要使用urlencode()来进行URL编码。

备注:readfile(),file()和file_get_contents()在读取整个文件夹中的内容时,不需要使用fopen()和fclose()函数,但是在读取一个字符,一行字符和任意长的字符时则必须使用。

2.写入文件:
    int fwrite(resource handle,string[,int length]);//执行文件的写入操作,它还有一个别名fputs().该方法用于把string的内容写入文件指针handle处。如果设置length,那麽写入length个字节或者完成string写入后,操作就会停止。成功写入则返回true,否则返回false。
备注:若给出length参数,那麽php.ini文件中的magic_quotes_runtime选项将会被忽略,而string中的斜线将不会被抽去。区分二进制文件和文本文件系统则在打开文件时fopen()函数的mode参数要加上‘b'。
   int file_put_contents(string filename,string data[.int flags[,resource context]]);//将一个字符串写入文件中,如果成功则返回字节数,否则返回false。flags:实现对文件的锁定(选项有 file_use_include_path,file_append:追加,lock_ex:独佔锁定)。context一个context资源。
备注:fwrite()虽然具备写入文件的功能,但是必须有fopen()和fclose()函数的支持。file_put_contents()整合了fopen(),fwrite(),fclose()功能,可以单独完成文件的写入。

3.关闭文件
  文件有打开就应该有关闭功能,对文件的操作结束后,应该关闭这个文件,否则可能引起错误。
  bool fclose(resouce handle);//将参数handle指向的文件关闭,如果成功则返回true,否则返回false。

锁定文件
  在向一个文本文件中写入数据的时候,需要先锁定文件,已防止其他用户同时也修改此文件的内容。php中通过flock()函数实现文件的锁定。
   bool flock(int handle ,int operation);//参数operation控制锁定权限。包括:lock_sh:取得共享锁定(读取程序)。lock_ex:取得独佔锁定(写入)。lock_un:释放锁定。lock_nb:防止flock()函数在锁定时堵塞。

目录处理函数
  目录是一种特殊的文件。既然是文件,如果对其进行操作,同样必须先打开,然后才可以进行浏览操作,最后还要记得关闭。

1.打开目录

  打开指定的目录文件,若果成功,则返回目录的句柄。否则返回false。与打开文件不同的是,若目录不存在,它并不会自动创建目录,而是抛出一个错误信息。通过在opendir()函数前加“@”符号,可以屏蔽错误信息的输出。
  resource opendir(string path[,resource context]);//path指定要打开的目录文件。如果path指定的不是一个有效的目录,或者因为权限问题,文件系统错误不能打开,那麽该函数将会返回false,并且产生一个E_WARNING级别的错误信息。

2.浏览目录

 利用opendir函数返回的句柄配合scandir函数实现浏览操作。
  array scandir(string directory[,int sorting_ordering[,resource context]]);//用于浏览指定路径下的目录和文件。如果成功则返回包含文件名的array,否则返回false。directory指定要浏览的目录,如果不是目录,那麽将返回false,并且产生一个E_WARNING级别的错误信息。sorting_order设置排列顺序,默认为字母升序排列。如果带上该参数,则变为降序排列。
备注:is_dir()函数,判断指定文件名是否一个目录。如果文件名存在且为目录,则返回true,否则返回false。如果是相对目录,则按照当前工作目录检查其相对路径。

3.关闭目录。
  void closedir(resource handle);//handle,要关闭的工作目录的句柄。

备注:前面已经了解到,若打开的目录不存在,系统并不会帮我们创建目录。那麽我们可以自行创建想要的目录。可以应用以下函数:
    mkdir()函数:新建一个目录,成功则返回true,否则false。
    rmdir()函数:删除目录。目录必须为空(目录中无文件或者子目录),且要有操作的权限。
    unlink()函数:删除文件,成功则返回true,失败返回false。

php文件上传、php文件下载原理 
       
步骤内容:
  步骤1:控制上传文件,通过php.ini文件配置。
  步骤2:对上传文件进行判断。上传文件的大小,格式等。
  步骤3:执行上传文件的操作方法。

1,控制上传文件:

  php通过对php.ini对上传文件进行控制,包括:是否支持上传、上传文件的临时目录、上传文件的大小、指令执行的时间与指令分配的内存空间。
    在php.ini文件中定位到file uploads选项,完成对上述选项的设置。选项含义如下:
    file_uploads:如果是on,说明服务器支持文件上传,如果为off,则不支持。一般默认是支持的,此选项不必修改。
    upload_tem_dir:上传文件的临时目录。在文件上传成功之前,文件首先保存在服务器的临时目录中。多数使用系统默认目录,但是也可以自行设置。
    upload_max_filesize:服务器允许上传文件的最大值,以MB为单位。系统默认为2MB,若超过则须修改其值。
    max_execution_time:php中一个指令所能执行的最长时间,单位是秒。该指令在执行上传超大文件时必须修改,否则及时上传文件在服务器允许的范围内,但是超过指令所能执行的最长时间,仍然无法实现上传。
    memory_limit:php中一个指令所分配的内存空间,单位时MB。它的大小同样会影响到超大文件的上传。

备注:在客户端中控制上传文件应用的时form表单中的enctype和method属性,以及隐藏域MAX_FILE_SIZE.
    enctype="multipart/form-data":指定表单编码数据方式。
    method="post":指定数据传输的方式。
    :通过隐藏域控制上传文件的大小,单位为字节。该值不能超过php.ini配置文件中的upload_max_filesize选项设置的值。它不能完全控制上传文件的大小,只能避免一些不必要的麻烦。

2,判断上传文件

  对上传文件进行判断应用的是全局变量$_FILES,$_FILES是一个数组,它包含所有上传文件的信息。数组中各个元素含义如下:
    $_FILES[filename][name]:存储上传文件的文件名,如text.txt,title.jpg等。
    $_FILES[filename][size]:存储文件的大小,单位为字节。
    $_FILES[filename][tem_name]:存储文件在临时目录中使用的文件名,因为文件在上传时首先要将其以临时文件的身份存储在临时目录中。
    $_FILES[filename][type]:存储上传文件的MIME类型。MIME规定各种文件格式的类型,每种MIME类型都时由“/”分隔的主类型和子类型组成。例如:"image/gif"的主类型为图像,子类型为GIF格式的文件。"text/html"代表文本的HTML文件。
    $_FILES[filename][error]:存储文件上传的错误代码:此项目为PHP4.2.0版本中新增内容。它的返回值由5种:
      0:表示没有任何错误。文件上传成功。
      1:表示上传文件的大小超出配置文件指令upload_max_filesize选项的限定值。
      2:表示上传文件的大小超出HTML表单中max_file_size选项所指定的值。
      3:表示文件只被上传了一部分。
      4:表示没有上传任何文件。
例子:
 

代码示例:

 1 2 下一页 尾页

    
 
 

您可能感兴趣的文章:

  • php session 原理详解,用法介绍以及如何设置过期时间
  • PHP exif扩展方法开启详解
  • PHP正则匹配图片并给图片加链接详解
  • php mail to 配置详解
  • php运行环境配置详解
  • Windows server 2008搭建php运行环境图文详解(php5.3)
  • PHP中替换键名的简易方法示例详解
  • php 获取完整url地址实例详解
  • php实例分享之通过递归实现删除目录下的所有文件详解
  • PHP $_FILES中error返回值详解
  • centos源码编译php5 mcrypt模块步骤详解
  • php事务处理实例详解
  • php数组编码转换示例详解
  • PHP 正则 email语句详解
  • php.ini文件上传功能配置详解
  • PHP5 时区设置方法详解
  • php数组递归转义实例详解,php转义函数
  • 配置PHP服务器环境步骤详解
  • php引用字符串常量方法详解
  • PHP汉字拼音转换、公历农历转换的实例详解
  • php-fpm优化方法详解
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • php是什么文件 php文件怎么打开
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP源文件加密工具 PHP Screw
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • Linux下重编译PHP后Apache竟然不能解析.php文件?
  • 图解找出PHP配置文件php.ini的路径的方法
  • php解压文件代码实现php在线解压
  • PHP大文件上传问题解析 php大文件上传配置参考
  • 查找php配置文件php.ini所在路径的二种方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • PHP介绍及学习网站推荐
  • 新老板要我用LINUX + PHP,推荐几本好书咯?
  • 欲学JAVA和JSP,请推荐一些好书和网站(象PHP的PHP。NET这样有function reference的,不要论坛的。无内容)谢谢!!!
  • 2014年最新推荐的10款 PHP 开发框架
  • PHP简单实现“相关文章推荐”功能的方法
  • PHP 正则表达式 推荐
  • 推荐没有虚拟主机的小巧的Mysql数据库备份脚本(PHP)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP去除html标签,php标记及css样式代码参考
  • php输入流php://input使用示例(php发送图片流到服务器)
  • php通过socket_bind()设置IP地址代码示例
  • PHP转换器 HipHop for PHP
  • php安装完成后如何添加mysql扩展
  • PHP 框架 Pop php
  • PHP的substr() 函数用法
  • PHP的JavaScript框架 PHP.JS
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • php服务器探针显示php服务器信息
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • PHP缓存加速器 Alternative PHP Cache (APC)
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • PHP自动化测试 PHP-QAT
  • php session_id()函数介绍及代码实例
  • PHP 的 HTTP 客户端库 PHP Buzz
  • Windows下php 5.3.5和apache2安装配置及测试
  • PHP 调试工具 PHP_Dyn
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • PHP代码格式化 php.fmt


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3