PHP学习文件处理与文件上传 课件

 更新时间:2008年06月15日 13:05:04   作者:  
主要包括php文件处理,文件的处理,文件指针相关处理函数,文件控制函数

DirectoryIterator自定义的类
getATime ():文件最后访问时间
getCTime ():文件最后的修改时间
getGroup ():文件所属组(仅UNIX)
getInode ():文件的节点(仅UNIX)
getOwner ():文件的宿主(仅UNIX)
getPerms ():访问该文件的权限
getSize ():文件的大小
getType ():文件的类型
getFileName ():文件的名称
getPath ():文件的路径
isDir ():是否是目录
isExecutable ():是否可以执行
isFile ():是否是文件
isLink ():是否是软链接文件
isReadable ():是否可读
isWritable ():是否可写
isDot ()方法分别过滤掉“.”和“..”目录。


$dname=$_GET["dname"];    //获取from表的信息
  if(isset($dname)&&!empty($dname)){  //判断变量是否被设置 检测一个变量是否为空
    $dir=new DirectoryIterator("{$dname}");    //new一个类
    echo $dir->getPath()."      //类的方法
  }else{
    $dir=new DirectoryIterator("D:\\");  //new d://目录
    echo $dir->getPath();
  }
  $delname=$_GET["del"];    
  if(isset($delname)&&!empty($delname)){
    if(unlink("{$dir->getPath()}\\$delname"))
      echo "删除成功";
  }

  while($dir->valid()){
    if($dir->isDir())
      echo "<a href='file14.php?dname={$dir->getPath()}\\{$dir->current()}'>".
      "{$dir->current()}</a><br>";
    else
       echo "{$dir->current()} <a href='#'>复制</a>".
      " <a href='file14.php?del={$dir->current()}'>删除</a><br>";
    $dir->next();
  }

范例2:function showdir($iter){    //设置一个函数方法 并赋值
    for(;$iter->valid();$iter->next()){  //检测目录是否还有下一个目录  想下移动一位
      if($iter->isDir() && $iter->isDot()){//检测是否是目录 并过滤掉.和..目录位置
        echo "目录".$iter->current()."<br>";  //指向返回列表元素的值
      }else{
        echo $iter->current().$iter->getSize()."字节<br>"; 反则 返回列表的值 并查看文件大小
      }
    }
  }
  showdir(new DirectoryIterator("C:/")); //传参 new一个系统默认类
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      PHP文件上传
  与文件系统和服务器的交互
文件上传`使用目录函数 `与文件系统的交互`使用程序执行函数`与环境变量交互


文件上传
在B/S程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录
PHP中文件上传的基础知识
表单提交`对文件的操作

何为文件上传?
为了满足传递文件信息的需要:HTTP协议实现了文件上传机制,从而可以将客户端的文件通过自己的浏览器上传到服务器上指定目录存放。



HTML规范规定上传文件时表单头必须使用
<html>
<head><title>文件上传</title></head>
<body>
<form action="todo.php" method="post" enctype="multipart/form-data"> //返回值  post 方式上传  表示要上传一个文件
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
上传文件:<input type="file" name="userfile">
提交:<input type="submit" value="提交查询">
</form>
</body>
</html>
注意几个特征属性:
POST方法:
表单最常用的功能,向目标页面传递变量,我们在上传文件的时候,会在表单中设置相应的属性,来完成文件的传递.
enctype="multipart/form-data"
这样服务器就会知道,我们要传递一个文件,这样服务器可以知道上载的文件带有常规的表单信息。
MAX_FILE_SIZE
此字段必须在文件输入字段之前,控制最大的传递文件的大小(字节) ——真的可以控制吗?
<input type="file" name="userfile">
设置浏览器文件输入浏览按钮

我们在服务器端的php.ini中设置对表单传递的数据进一步判断
file_uploads = On /Off 是否允许文件上传
upload_max_filesize = 2M 上传的文件的最大大小
post_max_size = 8M  POST数据所允许的最大大小
表单传递的数据,文件只是其中的一部分,所以设置时,upload_max_filesize应该小于post_max_size


    超级全局数组$_FILES
PHP程序中,需要处理的上传数据保存在全局数组中$_FILES(超级全局数组)
保存$_FILES数组中的元素,将HTML表单的type="file"标记的名称name="userfile" 存放在数组中。
存储在$_FILES['userfile']['name']中的值是:客户端文件系统的文件的名称
存储在$_FILES['userfile']['type']中的值是:客户端传递的文件的类型
存储在$_FILES['userfile']['size']中的值是:文件的字节的大小
存储在$_FILES['userfile']['tmp_name']中的值:文件被上传后在服务器存储的临时全路径
```````````````````````````````````````````
存储在$_FILES['userfile']['error']中的值是:文件上传的错误代码-php 4.2以后增加的功能
存储在$_FILES['userfile']['error']中的值
值为0:表示没有发生任何错误。
值为1:表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize。
值为2:表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值。
值为3:表示文件只被部分上传。
值为4:表示没有上传任何文件。
````````````````````````````````````
is_uploaded_file( )检测是否是上传文件
move_uploaded_file(临时路径/临时文件名,目的路径/目的文件名 ) 函数将存放在临时目录下的上传文件拷贝出来,存放到指定目录的指定文件名,如果目标存在将会被覆盖。
范例:print_r($_FILES["upfile"]);//将表单提交的系统存放在这
  echo "文件名字".$_FILES["upfile"]["name"];//文件名字
  if($_FILES["upfile"]["error"]<=1){//错误代码小于1  大于1表示有错误
    echo "请选择文件";
  }
  if(is_uploaded_file($_FILES["upfile"]["tmp_name"])){//检测这个文件是否是上传文件  文件的临时路径
    echo '是上传文件';
    move_uploaded_file($_FILES["upfile"]["tmp_name"],"./upload/".$_FILES["upfile"]["name"]);
    //将临时文件转移到upload目录 文件名 为原名
  }else{
    echo '不是上传文件';
  }
文件上传后的临时存放目录

上传的文件被放置到服务器端临时目录:/tmp目录里面 命名为一个唯一的,随机生成的临时文件名。 注:该文件在程序执行完后将自动被删除掉。在删除前可以像本地文件一样操作。
/tmp目录是默认的上传临时文件存放地点, 如果需要更改这个目录: 可以编辑/etc/php.ini 文件File Uploads 段的upload_tmp_dir  属性值。
当配置文件php.ini的register_globals属性被设置成on的情况
<input type=file name=myfilename>
将生成全局变量:$myfilename等 

```````````````````````````````````````````````
当需要上传多个文件的情况,有两种实现的解决方法:
使用不同的表单元素
<input type=file name=file_a>
<input type=file name=file_b>
使用数组格式的表单元素
<input type=file name=file[1]>
<input type=file name=file[2]>
`````````````````````````````````````````````````
使用目录函数
opendir?--?打开目录句柄
closedir?--?关闭目录句柄 
readdir?--?从目录句柄中读取条目 
语法格式:$d=opendir("./upload"); //打开这个文件目录
  while($s=readdir($d)){  //循环输出读取到的条目
    echo $s."<br>";
  }
  closedir($d);  //关闭句柄

创建和修改目录
mkdir?--?新建目录 
rmdir?--?删除目录 
mkdir("D:\\up");//创建一个目录
rmdir("up");//删除一个目录

磁盘操作
disk_free_space():统计某个磁盘的剩余空间
disk_total_space():显示逻辑磁盘的容量
echo disk_free_space("D:\\")/1024/1024/1024;
echo disk_total_space("D:\\")/1024/1024/1024;
getcwd():返回当前脚本所在路径
chdir():类似DOS的cd命令,改变当前路径
echo getcwd();//查看当前脚本路径
chdir("D:\\");//改变

使用程序执行函数
exec( ) 函数可以将要执行的命令作为参数。
passthru( ) 结果直接输出显示到浏览器。
system( )也是直接输出显示到浏览器,但有返回值

phpchana 课件
php文件处理.rar

相关文章

最新评论