项目目标
实现具有上传,查看,删除。下载功能的在线文件库。
第一阶段
文件操作:主要包括获取文件属性,打开文件,读取文件,删除文件等操作
文件属性
1.filetype函数:返回文件类型(在win下会返回file,dir,unkoown)
2.filesize函数:返回文件大小
3.filectime函数:返回文件创建时间的时间戳,通常需要格式化为日期格式
4.fileatime函数:返回文件上一次打开的时间戳
5.filemtime函数:返回文件上一次修改的时间戳
6.fileperms函数:返回文件权限,返回一个整数
将返回的整数转为类似于777,755的格式
<?php
decoct(fileperms($file) & 0777); // return "755"
?>
7.is_writeable:判断文件是否可以读取,返回bool
8.is_readable:判断文件是否可以写入
9.stat函数:以数组的形式返回文件的全部信息
文件属性的练习
<?php
$fn="testfile";//get file name
echo $fn."<br>";
echo 'filetype:',filetype($fn);//output file type
echo "<br>".'文件创建时间';
echo date("Y-m-d G:i:s",filectime($fn));//output file create date
echo "<br><br>";
if(is_readable($fn))//determine if the file is readable
echo "文件可读<br>";
else
echo "文件不可读<br>";
if(is_writable($fn))//determine if the file is writeable
echo "文件可写<br>";
else
echo '文件不可写<br>';
echo '文件大小:'.filesize($fn)."字节<br>";//output filesize
echo '文件上次访问时间'.date("Y-m-d G:i:s",fileatime($fn))."<br>";//output lastest time of access
echo '文件上次修改时间'.date("Y-m-d G:i:s",filemtime($fn))."<br>";//output lastest time of edit
echo '文件权限'.fileperms($fn)."------";//shoe file permisssions
echo printf("%o",fileperms($fn))."<br>";
echo "stat()以数组的形式返回文件属性<br>";
//print_r(stat($fn));
$file_attr=stat($fn);//put the array of file attr in file_attr
$n=0;
echo '<table border=1 width=100%>
<col witdth=20%/>
<col witdth=20%/>
<col witdth=20%/>
<col witdth=20%/>
<col witdth=20%/>
';
foreach ($file_attr as $K=>$v){
$n++;
if($n==1) echo '<tr>';
echo "<td>stat[$K]=$v</td>";
if ($n==5){
echo '</tr>';
$n=0;
}
}
?>
得到
文件的打开与关闭
1.fopen函数:以指定的模式,打开文件,返回文件指针
- mode:指定模式
- use_include_path:bool,为真时,从include_path中搜索文件
2.fclose函数:关闭文件,文件使用后要记得关闭
写入文件
写入文件需要以有写入权限的模式打开文件
1.fwrite函数:向文件写入数据
fwrite是文件指针操作,每一次写入都会移动指针
写入文件的练习
<?php
$fname = 'testfile';
$mode = 'w';//已写入模式打开
$handle = fopen($fname,$mode);
$n = fwrite($handle,'PHP book');//返回写入的字符数
echo "写入 $n 个字符<br>";
fwrite($handle,"\n");
$n = fwrite($handle,123);
fwrite($handle,"\n");
echo "写入 $n 个字符<br>";
$n = fwrite($handle,12.34);
fwrite($handle,"\n");
echo "写入 $n 个字符<br>";
$n = fwrite($handle,TRUE);//写入bool值会得到0和1
fwrite($handle,"\n");
echo "写入 $n 个字符<br>";
$n = fwrite($handle,serialize(array(1,'ab')));
//serialize() 返回字符串,此字符串包含了表示 value 的字节流,可以存储于任何地方。
//这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。
echo "写入 $n 个字符<br>";
fclose($handle);
echo '文件操作结束';
?>
得到
testfile文件内容
读取文件
写入文件需要以有写入权限的模式打开文件
1.fread函数:读取指定长度的字符串
同样是文件指针操作,每次读取都会使指针移动
2.fgetc函数:读取一个字符
3.fgets函数:读取一行,可以指定读取字节数
4.fgetss函数:读取一行,可以指定字节数,但会过滤其中的HTML字符比如<br>
什么的
文件指针操作
1.ftell函数:返回当前文件指针的位置
2.rewind函数:将指针位置返回至文件首位
读取文件与文件指针的练习
<?php
$fname = 'testfile';
$mode = 'r';//以读取模式打开
$handle = fopen($fname,$mode);
echo ftell($handle).'<br>';//输出打开文件时的指针位置
echo fgetc($handle);//读取一个字符
//此时文件的指针移动
echo ftell($handle).'<br>';//输出读取字符后的指针位置
echo fgets($handle);//读取一行
//此时文件的指针移动
echo '<br>';
echo fgets($handle);//读取第二行
echo '<br>';
echo fgets($handle);//读取第三行
echo '<br>';
echo fgetss($handle);//读取第四行并且删除其中的HTML标记
echo '<br>';
echo fgetss($handle,225,'<h1>');//读取第五行
//第二个参数用来获取读取的字符数
//第三个参数指定fgetss取出html时的排除项
echo '<br>';
rewind($handle);//将指针倒退回文件首位
echo ftell($handle).'<br>'; //输出重置指针后的位置
echo fread($handle,50).'<br>';//输出指定长度的字符
fclose($handle);
echo '文件操作完成'
?>
得到
读取CSV 文件
CSV文件是指文件中的数据用分隔符(逗号,句号)等分隔。
1.fgetcsv函数:读取CSV文件并解析
读取CSV文件的练习
testcsv文件内容
你好;,好;;,不好
php代码
<?php
echo "<h1>读取CSV文件</h1>";
$fname ="testcsv";
$mode = 'r';
//读
$handle =fopen($fname,$mode);
$a = fgetcsv($handle,0,';');
//返回一个数组
foreach($a as $v) echo $v;
fclose($handle)
//但第二个参数指定为0,默认表示读取一行
?>
得到
其他文件操作
1.file_exists函数:测试指定的文件是否存在,返回bool
2.copy函数:复制文件
copy(file1,NEW_file2);
3.rename函数:移动或者重命名文件
rename(oldname,newname);//重命名
rename(path1/filename,path2/filename);//移动
4.unlink函数:删除指定文件