本文实例讲述了PHP实现的文件操作类及文件下载功能。分享给大家供大家参考,具体如下:
文件操作类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
<?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 ; } } ?> |
1
2
3
4
5
6
7
8
9
|
<?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!" ); ?> |
文件下载:
1
2
3
4
5
6
7
8
9
10
11
12
|
<?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程序设计有所帮助。