本文实例讲述了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
|
// Copyright 2005, Lee Babin ([email protected])
// 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
classcfile {
//The path to the file we wish to work with.
protected$thepath;
//Error messages in the form of constants for ease of use.
constFOUNDERROR ="Sorry, the file in question does not exist.";
constPERMERROR ="Sorry, you do not have the proper permissions on this file";
constOPENERROR ="Sorry, the file in question could not be opened.";
constCLOSEERROR ="Sorry, the file could not be closed.";
//The constructor function.
publicfunction__construct (){
$num_args= func_num_args();
if($num_args> 0){
$args= func_get_args();
$this->thepath =$args[0];
}
}
//A function to open the file.
privatefunctionopenfile ($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{
thrownewexception (self::OPENERROR);
returnfalse;
}
}catch(exception$e) {
echo$e->getmessage();
}
}else{
thrownewexception (self::PERMERROR);
}
}catch(exception$e) {
echo$e->getmessage();
}
}else{
thrownewexception (self::FOUNDERROR);
}
}catch(exception$e) {
echo$e->getmessage();
}
}
//A function to close a file.
functionclosefile () {
try{
if(!fclose ($this->thepath)){
thrownewexception (self::CLOSEERROR);
}
}catch(exception$e) {
echo$e->getmessage();
}
}
//A function to read a file, then return the results of the read in a string.
publicfunctionread () {
//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.
returnfgets($filepointer);
}
//Lastly, close the file.
$this->closefile ();
}
//A function to write to a file.
publicfunctionwrite ($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.
returnfwrite ($filepointer,$towrite);
}
//Lastly, close the file.
$this->closefile ();
}
//A function to append to a file.
publicfunctionappend ($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.
returnfwrite ($filepointer,$toappend);
}
//Lastly, close the file.
$this->closefile ();
}
//A function to set the path to a new file.
publicfunctionsetpath ($newpath) {
$this->thepath =$newpath;
}
}
?>
|
1
2
3
4
5
6
7
8
9
|
$myfile=newcfile ("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
|
$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);
?>
|