php学习基础-文件系统(三) 文件夹的相关操作、php文件上传、php文件下载
2014-06-15 16:50
1136 查看
一、php复制文件夹
二、php遍历文件夹,获取文件夹,文件相关属性
三、删除目录,目录不为空删除不了的
四、php文件上传
1、html代码表单
2、php后端代码
<?php /* * 文件的操作: 创建文件, 删除文件, 重命名rename, 大小, 移动复制等 读取 (都有PHP内置函数) * * 目录的操作: 创建目录(有),删除目录,复制目录, 统计目录大小, 遍历 (自己定义函数) * * * * 一、遍历目录: * * opendir() * readdir() * closedir() * rewinddir() * 创建目录 * mkdir(); //创建一个空目录 * * 删除目录 * rmdir(); //只可以删除空目录 * * 移动或重命名函数 * rename('c:/bbbccc', 'phpMyAdmin'); //和文件操作一样 复制 */ $dirname="phpMyAdmin"; copydir($dirname, "hello1"); function copydir($dirsrc, $dirto){ if(is_file($dirto)){ echo "目标不是目录不能创建"; return; } if(!file_exists($dirto)){ mkdir($dirto); // echo "创建目录".$dirto."成功!<br>"; } $dir=opendir($dirsrc); while($filename=readdir($dir)){ if($filename!="." && $filename!=".."){ $file1=$dirsrc."/".$filename; $file2=$dirto."/".$filename; if(is_dir($file1)){ copydir($file1, $file2); //递归处理 }else{ copy($file1, $file2); } } } closedir($dir); }
二、php遍历文件夹,获取文件夹,文件相关属性
$dirname="phpMyAdmin"; // echo tosize(dirsize($dirname)); $dir=opendir($dirname); // readdir($dir); // readdir($dir); while($fileName=readdir($dir)){ $file=$dirname.'/'.$fileName; if($fileName!="." && $fileName!=".."){ if(is_dir($file)){ echo "<font color='red'>".$fileName."---".date("Y-m-d H:i:s", filectime($file))."----".filetype($file)."-------".toSize(dirsize($file))."-----------------</font><br>"; }else{ echo "<font color='green'>".$fileName."-----".date("Y-m-d H:i:s", filectime($file))."----".filetype($file)."------".toSize(filesize($file))."-------------------</font><br>"; } } } closedir($dir); function toSize($size){ $dw="Bytes"; if($size > pow(2, 30)){ $size=round($size/pow(2, 30), 2); $dw="GB"; }else if($size > pow(2, 20)){ $size=round($size/pow(2, 20), 2); $dw="MB"; }else if($size > pow(2, 10)){ $size=round($size/pow(2, 10), 2); $dw="KB"; }else{ $dw="bytes"; } return $size.$dw; } function dirsize($dirname) { $dirsize=0; $dir=opendir($dirname); while($filename=readdir($dir)){ $file=$dirname."/".$filename; if($filename!="." && $filename!=".."){ if(is_dir($file)){ $dirsize+=dirsize($file); //递归完成 }else{ $dirsize+=filesize($file); } } } closedir($dir); return $dirsize; }
三、删除目录,目录不为空删除不了的
$dirname="phpMyAdmin"; deldir($dirname); function deldir($dirname){ if(file_exists($dirname)) { $dir=opendir($dirname); while($filename=readdir($dir)){ if($filename!="." && $filename!=".."){ $file=$dirname."/".$filename; if(is_dir($file)){ deldir($file); //使用递归删除子目录 }else{ echo '删除文件<b>'.$file.'</b>成功<br>'; unlink($file); } } } closedir($dir); echo '删除目录<b>'.$dirname.'</b>成功<br>'; rmdir($dirname); } }
四、php文件上传
/* 一、PHP配置文件中和上传文件有关的选项 * * file_uploads = on * * upload_max_filesize= 200M 最大不要超过服务器的内存 * * upload_tmp_dir = c:/uploads/ * *post_max_size = 250M * * 二、上传表单需要的注意事项 * * 1. 如果有文件上传操作表单的提交方法必须 HTTP post * 2. 表单上传需要使用type为file的表 * 3. enctype="multipart/form-data" 只有文件上传时才使用这个值 ,用来指定表单编码的数据方式, 让服务器知道,我们要传递一个文件并带有常规的表单信息。 * * 4. 建议添加一个 MAX_FILE_SIZE 隐藏表单, 值的单位也是字节 * * * 三、PHP处理上传的数据 * * * $_POST 接收非上传的数据 * * * 如果是文件上传的数据则使用 $_FILES处理上传的文件 */
1、html代码表单
<html> <head> <title> File Uploads </title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> shopname: <input type="text" name="shopname" > <br> shopprice: <input type="text" name="price"> <br> shopnum : <input type="text" name="num"> <br> <input type="hidden" name="MAX_FILE_SIZE" value="100000000"> shoppic: <input type="file" name="pic"> <br> <input type="submit" name="sub" value="添加商品"> </form> </body> </html>
2、php后端代码
<?php //step 1 使用$_FILES['pic']["error"] 检查错误 if($_FILES["pic"]["error"] > 0){ switch($_FILES["pic"]["error"]) { case 1: echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br>"; break; case 2: echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值"; break; case 3: echo "文件只有部分被上传"; break; case 4: echo "没有文件被上传"; break; default: echo "末知错误"; } exit; } $maxsize=5000000; //50k //step 2 使用$_FILES["pic"]["size"] 限制大小 单位字节 2M=2000000 if($_FILES["pic"]["size"] > $maxsize ) { echo "上传的文件太大,不能超过{$maxsize}字节"; exit; } //step 3 使用$_FILES["pic"]["type"]或是文件的扩展名 限制类型 MIME image/gif image/png gif png jpg /* list($dl, $xl) = explode("/", $_FILES["pic"]["type"]); if($dl!="image"){ echo "请上传一个图片,不充许其它类型文件"; exit; } */ $allowtype=array("png", "gif", "jpg", "jpeg"); $arr=explode(".", $_FILES["pic"]["name"]); $hz=$arr[count($arr)-1]; if(!in_array($hz, $allowtype)){ echo "这是不充许的类型"; exit; } //step 4 将让传后的文件名改名 $filepath="./uploads/"; $randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100, 999).".".$hz; //将临时位置的文件移动到指定的目录上即可 if(is_uploaded_file($_FILES["pic"]["tmp_name"])){ if(move_uploaded_file($_FILES["pic"]["tmp_name"], $filepath.$randname)){ echo "上传成功"; }else{ echo "上传失败"; } }else{ echo "不是一个上传文件"; }
相关文章推荐
- 学习笔记:基础+文件操作(上传|下载)+面向对象+xml
- PHP学习-----文件操作/上传和下载
- php学习基础-文件系统(二) 文件读写操作、文件资源处理
- java实现对hdfs文件系统的上传,下载,删除,创建文件夹的操作演示
- PHP基础学习1——文件操作
- php学习笔记(十)文件的上传与下载
- PHP 文件操作2 上传下载
- php学习笔记1---文件的相关操作
- php学习笔记3--文件系统的操作(创建、打开及批量删除)
- PHP+FLASH实现上传文件进度条相关文件 下载
- PHP文件操作(三)PHP实现文件上传和下载
- php学习笔记(九)文件相关的处理操作
- C# FTP 文件 文件夹操作 上传 下载
- Struts2系统学习(10)文件上传与下载案例及原理分析
- 【小白笔记】PHP学习之路 (26) --文件上传与下载、配置
- PHP+FLASH实现上传文件进度条相关文件 下载
- C# FTP 文件 文件夹操作 上传 下载
- 学习 PHP,第 1 部分: 注册帐户、上传需要批准的文件、并查看和下载已批准的文件
- 安装、进程-云计算学习笔记---hadoop的简介,以及安装,用命令实现对hdfs系统进行文件的上传下载-by小雨
- php中访问文件或文件夹相关操作