PHP课程笔记14

课时232 文件系统概述

//filetype这个函数不常用
echo filetype("../test");
echo "<br>";
echo filetype("../test/file.php")."<br>";

//is_xxx这类型函数比较常用
if(is_dir("../test")){
echo "目录";
}else{
echo "文件";
}


 课时233 文件的属性

//获取文件属性的函数
function getfilePro($filename){
//文件是否存在
if(file_exists($filename)){
echo "文件存在<br>";

//获取文件的类型
getFileType($filename);

//获取文件的权限
if(is_readable($filename)){
echo "文件可读<br>";
}
if(is_writable($filename)){
echo "文件可写<br>";
}
if(is_executable($filename)){
echo "文件可执行<br>";
}
//获取文件的大小
if(is_dir($filename)){
echo "目录大小无法获取<br>";
}else{
echo "文件大小为".tosize(filesize($filename))."<br>";
}

//获取文件的修改时间
echo "文件的修改时间:".date("Y-m-d H:s:i",filemtime($filename))."<br>";
//获取文件的创建时间
echo "文件的创建时间:".date("Y-m-d H:s:i",filectime($filename))."<br>";
//获取文件的访问时间
echo "文件的访问时间:".date("Y-m-d H:s:i",fileatime($filename))."<br>";
}else{
echo "文件不存在<br>";
}

}

//获取文件的类型
function getFileType($filename){
switch(filetype($filename)){
case 'dir':
echo "这是一个目录<br>";
break;
case 'char':
echo "这是一个字符设置<br>";
break;
case 'block':
echo "这是一个块设备<br>";
break;
case 'file':
echo "这是一个文件<br>";
break;
case 'link':
echo "这是一个链接<br>";
break;
default:
echo "未知类型<br>";
break;
}
}

//文件大小的转换函数
function tosize($size){
$s = $size;
$dw = "";

if($size > pow(2,40)){
$s = $size/pow(2,40);
$dw = "TB";
}elseif($size > pow(2,30)){
$s = $size/pow(2,30);
$dw = "GB";
}elseif($size > pow(2,20)){
$s = $size/pow(2,20);
$dw = "MB";
}elseif($size > pow(2,10)){
$s = $size/pow(2,10);
$dw = "KB";
}else{
$s = $size;
$dw = "types";
}
return $s.$dw;
}

getfilePro("../test/file.php");

结果:

文件存在
这是一个文件
文件可读
文件可写
文件大小为910types
文件的修改时间:2014-12-12 07:03:57
文件的创建时间:2014-12-12 07:05:44
文件的访问时间:2014-12-12 07:05:44.


 

课时234 解析目录路径

/*
* windows: c:\app\www\aa.php
* linux : /usr/local/www
*
* 1.注意: "c:/app/www",所有的程序中不管是什么操作系统,全部都使用"/"代表路径分割符号(PHP程序中,APACHE配置文件中,PHP配置文件中)
* 2.windows ; "c:www\ss";"c:www/eee"
* linux : /usr/aaa:/etc/aaa
* PATH_SEPARATOR ,多文件的分隔符用此常量
* 3. ./是当前目录 ../是上一级目录 这都是相对目录
* c:/www/ae 是绝对路径
*
* 4.不同的根路径
* 一个是文档根路径,一个是系统根路径
*
*/


课时235 遍历目录

//foreach(glob("../test/*.php") as $filename){
// echo $filename."<br>";
//}

//打开目录资源
$dir = opendir("D:\wamp");

//不操作.和..
while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = "D:/wamp/".$filename;
if(is_dir($filename)){
echo "目录:".$filename."<br>";
}else{
echo "文件:".$filename."<br>";
}
}
}

rewinddir($dir);
echo "****************<br>";

while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = "D:/wamp/".$filename;
if(is_dir($filename)){
echo "目录:".$filename."<br>";
}else{
echo "文件:".$filename."<br>";
}
}
}

//关闭目录
closedir($dir);

结果:

目录:D:/wamp/alias
目录:D:/wamp/apps
文件:D:/wamp/barimage.bmp
目录:D:/wamp/bin
文件:D:/wamp/images_off.bmp
文件:D:/wamp/images_on.bmp
目录:D:/wamp/lang
文件:D:/wamp/license.txt
目录:D:/wamp/logs
目录:D:/wamp/scripts
目录:D:/wamp/tmp
目录:D:/wamp/tools
文件:D:/wamp/unins000.dat
文件:D:/wamp/unins000.exe
文件:D:/wamp/uninstall_services.bat


课时236 统计目录中的个数和大小

$total = disk_total_space("C:");
echo "C:总空间大小:".round($total/pow(2,30))."G<br>";

$free = disk_free_space("C:");
echo "C:可用空间大小:".round($free/pow(2,30))."G<br>";

$dirn = 0; //目录数
$filen = 0; //文件数
//用来统计一个目录下的文件和目录的个数
function GetDirNum($file){
global $dirn;
global $filen;
if(is_dir($file)){
$dir = opendir($file);

while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = $file."/".$filename;

if(is_dir($filename)){
$dirn++;
GetDirNum($filename);
}else{
$filen++;
}
}

}

closedir($dir);
}else{
return 1;
}
}

GetDirNum("D:/wamp");
echo "目录数为:{$dirn}<br>";
echo "文件数为:{$filen}<br>";

echo "=====================================<br>";

function DirSize($file){
$size = 0;
$dir = opendir($file);

while($filename = readdir($dir)){
if($filename!="." && $filename!=".."){
$filename = $file."/".$filename;

if(is_dir($filename)){
$size += DirSize($filename);
}else{
$size += filesize($filename);
}
}

}

closedir($dir);

return $size;

}
echo "目录大小:".round((DirSize("D:/wamp")/pow(1024,2)))."MB<br>";

结果:

C:总空间大小:200G
C:可用空间大小:165G
目录数为:494
文件数为:4484
=====================================
目录大小:452MB


课时237 建立与删除目录

rmdir  删除空目录

unlink  删除文件


课时238 复制、移动目录

 

/*
*
* 复制目录
* $dirsrc 源目录
* $dirto 目标目录
*/

//rename("Test","../test");

function copydir($dirsrc,$dirto){
//如果原来的文件存在, 判断是不是一个目录
if(file_exists($dirto)){
if(!is_dir($dirto)){
echo "目标不是一个目录,不能复制进去";
}
}else{
mkdir($dirto);
}

$dir = opendir($dirsrc);
while($filename = readdir($dir)){
if($filename !="." && $filename !=".."){
$srcfile = $dirsrc."/".$filename;
$tofile = $dirto."/".$filename;

if(is_dir($srcfile)){
copydir($srcfile,$tofile); //递归处理
}else{
copy($srcfile,$tofile);
}
}
}

}


课时239 文件的一些基本操作函数

//创建一个空文件
//touch("./sce.txt");

//复制文件
//copy("sce.txt","zaj.txt");

//移动或重新命名一个文件
//rename("zaj.txt","eee.txt");

//删除一个文件
//unlink("eee.txt");

//对文件内容的截取
//$fp = fopen("sce.txt","rw");
//ftruncate($fp,100);

//对文件内容的操作
//echo file_get_contents("sce.txt"); //获取文件内容
//file_put_contents("zaj.txt","wwwwwwwweirfjeijrflsdjfij"); //文件不存在时,创建文件并添加内容

//readfile("http://www.baidu.com");


课时240 文件的打开与关闭

* $fp = fopen("位置URL","打开模式RW");
*
* fclose($fp);


课时241 文件的内容操作

$fp = fopen("zaj.txt","a+");

//fwrite($fp,"www.baidu.com ");
//echo fgetc($fp); //一次只读一个字符.

/* while(!feof($fp)){ //feof除了出错或者到文件最后,才会返回true,
echo fgetc($fp);
}

*/
//echo fgets($fp); //一次读一行
//echo fread($fp,filesize("zaj.txt")); //第二个参数可以指定读多少个字符

echo ftell($fp)."<br>";
fseek($fp,4); //fseek在文件指针中定位
echo ftell($fp)."<br>";
echo fread($fp,5)."<br>";

//fwrite($fp,"hello world");
echo fread($fp,filesize("zaj.txt"));

fclose($fp);


课时242 简单留言版

<?php
$filename = "message.txt";
//如果用户提交了,就写入文件,按一定格式写入
if(isset($_POST['dosubmit'])){
//字段的分割使用||,行的分割使用[n]
$mess = "{$_POST['username']} ||".time()."|| {$_POST['title']} || {$_POST['content']}[n]";

writemessage($filename,$mess);
}
if(file_exists($filename)){
readmessage($filename);
}

function writemessage($filename,$mess){
$fp = fopen($filename,"a");

fwrite($fp,$mess);

fclose($fp);
}
function readmessage($filename){
$mess = file_get_contents($filename);

$mess = rtrim($mess,"[n]");

$arrmess = explode("[n]",$mess);

foreach($arrmess as $m){
list($username,$dt,$title,$content) = explode("||",$m);

echo "{$username},".date("Y-m-d H:i")."<i>{$title}</i><u>{$content}</u><br><hr><br>";
}

}

?>

<form action="liuyanban.php" method="post">
用户名:<input type="text" name="username" value="" /><br>
标&nbsp&nbsp题:<input type="text" name="title" value="" /><br>
内&nbsp&nbsp容:<textarea name="content" cols="40 rows="4"> </textarea><br>
<input type="submit" name="dosubmit" value="留言"><br>
</form>

结果:

1 ,2014-12-20 13:59 1 1


2 ,2014-12-20 13:59 3 4


 

用户名:
标  题:
内  容:

课时243 文件的锁定机制


 

 课时244 文件上传的设置

  • upform.php

<?php
/*
* 一定要用post模式, 还要再加enctype="multipart/form-data"
* 在file上要加个hidden
*
*/
?>
<form action="upload.php" method="post" enctype="multipart/form-data">
name:<input type="text" name="username" value="" /><br>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
up pic:<input type="file" name="pic" value="" /><br>
<input type="submit" name="dosubmit" value="上传">
</form>

  • upload.php

<?php
/*
*
*
*/

echo '<pre>';
print_r($_POST);
print_r($_FILES);
echo '</pre>';
?>

结果:

Array
(
    [username] => aaaaa
    [MAX_FILE_SIZE] => 1000000
    [dosubmit] => 上传
)
Array
(
    [pic] => Array
        (
            [name] => dd121101195424-5.jpg
            [type] => image/pjpeg
            [tmp_name] => D:\wamp\tmp\php4200.tmp
            [error] => 0
            [size] => 10650
        )

)

 课时245 文件上传的处理
  • upload.php

<?php
/*
[pic] => Array
(
[name] => 11492849503ac00b2el.jpg
[type] => image/pjpeg
[tmp_name] => D:\wamp\tmp\phpC00C.tmp
[error] => 0
[size] => 468900
)
*/

//第一步:判断错误
if($_FILES['pic']['error'] > 0){
switch($_FILES['pic']['error']){
case 1:
echo "超出了规定大小<br>";
break;
case 2:
echo "超出了HTML表单大小<br>";
break;
case 3:
echo "只有部分上传<br>";
break;
case 4:
echo "没有上传任何文件<br>";
break;
default:
echo "未知错误<br>";
break;
}
exit;
}

//第二步:判断类型
$arr = explode(".",basename($_FILES['pic']['name']));
$hz = array_pop($arr);

$allowtype = array("gif","png","jpg","jpeg");

if(!in_array($hz,$allowtype)){
echo "上传类型不合法";
exit;
}else{
echo "上传类型正确";
}

//第三步:判断大小
$maxsize = 1000000;
if($_FILES['pic']['size']>$maxsize){
echo "超出大小";
exit;
}

//第四步:上传后的文件名一定要设置
$tmpfile = $_FILES['pic']['tmp_name'];
$srcname = "./uploads/".date("YmdHis").rand(100,999).".".$hz;

//将临时目录下的上传的文件,复制到制定的目录下,制定的名字就可以上传完成

if(move_uploaded_file($tmpfile,$srcname)){
echo "上传成功";
}else{
echo "上传失败";
}

?>


课时246 处理多个文件上传

<?php

$num = count($_FILES['pic']['name']);
for($i=0;$i<$num;$i++){

//第一步:判断错误
if($_FILES['pic']['error'][$i] > 0){
switch($_FILES['pic']['error'][$i]){
case 1:
echo "超出了规定大小<br>";
break;
case 2:
echo "超出了HTML表单大小<br>";
break;
case 3:
echo "只有部分上传<br>";
break;
case 4:
echo "没有上传任何文件<br>";
break;
default:
echo "未知错误<br>";
break;
}
exit;
}

//第二步:判断类型
$arr = explode(".",basename($_FILES['pic']['name'][$i]));
$hz = array_pop($arr);

$allowtype = array("gif","png","jpg","jpeg");

if(!in_array($hz,$allowtype)){
echo "上传类型不合法";
continue;
}else{
echo "上传类型正确<br>";
}

//第三步:判断大小
$maxsize = 1000000;
if($_FILES['pic']['size'][$i]>$maxsize){
echo "超出大小";
continue;
}

//第四步:上传后的文件名一定要设置
$tmpfile = $_FILES['pic']['tmp_name'][$i];
$srcname = "./uploads/".date("YmdHis").rand(100,999).".".$hz;

//将临时目录下的上传的文件,复制到制定的目录下,制定的名字就可以上传完成

if(move_uploaded_file($tmpfile,$srcname)){
echo "上传成功<br>";
}else{
echo "上传失败";
}
}
?>


课时247 文件上传类


课时248 文件下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值