这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 实现的文件操作类及文件下载功能, 结合实例形式分析了 php 针对文件的读、写、创建及下载等功能实现技巧, 需要的朋友可以参考下
本文实例讲述了 PHP 实现的文件操作类及文件下载功能。分享给大家供大家参考,具体如下:
文件操作类:
- <?php
- // Copyright 2005, Lee Babin (lee@thecodeshoppe.com)
- // This code may be used and redistributed without charge
- // under the terms of the GNU General Public
- // License version 2.0 or later -- www.gnu.org
- // Subject to the retention of this copyright
- // and GPL Notice in all copies or derived works
- class cfile {
- //The path to the file we wish to work with.
- protected $thepath;
- //Error messages in the form of constants for ease of use.
- const FOUNDERROR = "Sorry, the file in question does not exist.";
- const PERMERROR = "Sorry, you do not have the proper permissions on this file";
- const OPENERROR = "Sorry, the file in question could not be opened.";
- const CLOSEERROR = "Sorry, the file could not be closed.";
- //The constructor function.
- public function __construct (){
- $num_args = func_num_args();
- if($num_args > 0){
- $args = func_get_args();
- $this->thepath = $args[0];
- }
- }
- //A function to open the file.
- private function openfile ($readorwrite){
- //First, ensure the file exists.
- try {
- if (file_exists ($this->thepath)){
- //Now, we need to see if we are reading or writing or both.
- $proceed = false;
- if ($readorwrite == "r"){
- if (is_readable($this->thepath)){
- $proceed = true;
- }
- } elseif ($readorwrite == "w"){
- if (is_writable($this->thepath)){
- $proceed = true;
- }
- } else {
- if (is_readable($this->thepath) && is_writable($this->thepath)){
- $proceed = true;
- }
- }
- try {
- if ($proceed){
- //We can now attempt to open the file.
- try {
- if ($filepointer = fopen ($this->thepath, $readorwrite)){
- return $filepointer;
- } else {
- throw new exception (self::OPENERROR);
- return false;
- }
- } catch (exception $e) {
- echo $e->getmessage();
- }
- } else {
- throw new exception (self::PERMERROR);
- }
- } catch (exception $e) {
- echo $e->getmessage();
- }
- } else {
- throw new exception (self::FOUNDERROR);
- }
- } catch (exception $e) {
- echo $e->getmessage();
- }
- }
- //A function to close a file.
- function closefile () {
- try {
- if (!fclose ($this->thepath)){
- throw new exception (self::CLOSEERROR);
- }
- } catch (exception $e) {
- echo $e->getmessage();
- }
- }
- //A function to read a file, then return the results of the read in a string.
- public function read () {
- //First, attempt to open the file.
- $filepointer = $this->openfile ("r");
- //Now, return a string with the read data.
- if ($filepointer != false){
- //Then we can read the file.
- return fgets ($filepointer);
- }
- //Lastly, close the file.
- $this->closefile ();
- }
- //A function to write to a file.
- public function write ($towrite) {
- //First, attempt to open the file.
- $filepointer = $this->openfile ("w");
- //Now, return a string with the read data.
- if ($filepointer != false){
- //Then we can read the file.
- return fwrite ($filepointer, $towrite);
- }
- //Lastly, close the file.
- $this->closefile ();
- }
- //A function to append to a file.
- public function append ($toappend) {
- //First, attempt to open the file.
- $filepointer = $this->openfile ("a");
- //Now, return a string with the read data.
- if ($filepointer != false){
- //Then we can read the file.
- return fwrite ($filepointer, $toappend);
- }
- //Lastly, close the file.
- $this->closefile ();
- }
- //A function to set the path to a new file.
- public function setpath ($newpath) {
- $this->thepath = $newpath;
- }
- }
- ?>
- <?php
- $myfile = new cfile ("test.txt");
- //Now, let's try reading it.
- echo $myfile->read();
- //Then let's try writing to the file.
- $myfile->write ("Hello World!");
- //Then, let's try appending.
- $myfile->append ("Hello Again!");
- ?>
文件下载:
- <?php
- $filename = 'file1.txt';
- $file = fopen($filename, 'r');
- Header("Expires: 0");
- Header("Pragma: public");
- Header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
- Header("Cache-Control: public");
- Header("Content-Length: ". filesize($filename));
- Header("Content-Type: application/octet-stream");
- Header("Content-Disposition: attachment; filename=".$filename);
- readfile($filename);
- ?>
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0808/340796.html