PHP文件系统

PHP是后端语言,那么可以对服务器的文件可以进行很多的操作,当然需要有权限的情况下,cURL是php的一个功能,只要使用到网络资源,就可以优先考虑一下他

PHP文件系统概述

首先介绍一些方法
判断函数

glob      //返回匹配模式的文件或目录名(以数组形式)
opendir   //打开一个目录,返回目录资源
readdir      //读取一个目录资源,如果读到结尾,返回false
closedir     //关闭一个目录资源
file_exists   //检查文件或目录是否存在
is_dir/is_file    //判断给定文件名是否是一个目录/文件
is_readable/is_writable/is_executable    //判断给定文件名是否可读/可写/可执行
is_link      //判断给定文件名是否为一个符号连接
is_uploaded_file      //判断文件是否是通过 HTTP POST 上传的

获取函数 , 有点多

stat      // 给出文件的信息,关联数组 和 索引数组  都有
disk_free_space    //返回目录中的可用空间
disk_total_space       //返回一个目录的磁盘总大小
file       // 把整个文件读入一个  关连数组  中,一行存入一次
file_get_contents      //将整个文件读入一个字符串

fileatime / filectime / filemtime      // 取得文件的   上次访问时间 / inode 修改时间 / 修改时间
fileinode     // 取得文件的 inode 节点

fileowner    // 取得文件的所有者
filegroup     // 取得文件的组
fileperms    // 取得文件的权限
filesize    // 取得文件大小
filetype    // 取得文件类型

realpath    // 返回规范化的绝对路径名
basename    // 返回路径中的文件名部分
dirname     // 返回路径中的目录部分

更改函数/修改函数

chgrp/chmod/chown    // 改变文件    所属的组  / 文件模式 / 文件的所有者 , 和linux下和相似
file_put_contents   // 将一个字符串写入文件
rename     // 重命名一个文件或目录
copy     //  拷贝文件
move_uploaded_file    // 将上传的文件移动到新位置
umask    // 改变当前的 umask
unlink      //  删除文件
rmdir       //  删除目录
readfile   // 输出文件

指针函数/锁

fopen/fclose    //  打开文件或者 URL / 关闭一个已打开的文件指针
fread   // 读取文件(可安全用于二进制文件)
fseek      // 在文件指针中定位
fstat      // 通过已打开的文件指针取得文件信息 , 与stat差不多
ftell     // 返回文件指针读/写的位置  ,int型
fwrite    // 写入文件(可安全用于二进制文件)
feof      // 测试文件指针是否到了文件结束的位置   ,返回 boolean
fpassthru   // 输出文件指针处的所有剩余数据
fgetc/fgets     //从文件指针中  读取字符/读取一行
rewind    // 倒回文件指针的位置
flock    // 轻便的文件锁定/解锁 都是一这个函数

文件的权限在linux中是有清晰可见的,但在window系统中的并没有那么详细,所以某些函数最好是在linux下使用。在PHP下,获得一个文件的内容是很轻松的

//  这样就可以获得所有内容和与其行数, 一行就是一个数组
if(file_exists("123.txt")){
$arr  = file("123.txt");
foreach ($arr as $line => $value) {
e."---->".$value."<br>";   
}     //  =>    输出   "0---->1231231  ....... 12---->afasfsdf"
}

POST 文件上传

必须在form 中 添加 enctype=”multipart/form-data”  method=post 这两个属性

<input type=”hidden” name=”MAX_FILE_SIZE” value=”10000″> 可以在上传时设定文件大小,但并不是安全的

成功上传后,PHP会存在全局数组$_FILES里,打印$_FILES后,(只上传了一个图片)具体格式如下

Array
(
     [ccc] => Array
     (       
          [name] => 50658PIC2kb_1024.png
          [type] => image/png
          [tmp_name] =>/private/var/tmp/phpKyrId2
          [error] => 0
          [size] => 57522
     )
)

type 就是这个上传文件的mime类型,size就是这个文件的大小,error就是错误码


UPLOAD_ERR_OK:其值为 0,没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE:其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE:其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL:其值为 3,文件只有部分被上传。
UPLOAD_ERR_NO_FILE:其值为 4,没有文件被上传。
UPLOAD_ERR_NO_TMP_DIR:其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
UPLOAD_ERR_CANT_WRITE:其值为 7,文件写入失败。PHP 5.1.0 引进。


$_FILES[‘ccc’][‘tmp_name ‘]     就是上传后的文件,其实他后缀已经改变了,我们可能通过方法将他拿出

move_uploaded_file(原有文件, 新文件)     //返回一个boolean 值,提示上传成功与否

实现多个文件上传,只需要使每个input的name值不同就可以了,也可以使用数组

<input name=”file_a”><input name=”file_b”>
<input name=”file[]”><input name=”file[]”>

以下内容可以抓取一个网站的内容Client URL 能够连接通讯各种服务器、使用各种协议。支持的协议有 http、http、ftp、gopher、telnet、dict、file、ldap。 同时支持 http 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

// 创建一个新cURL资源
$ch = curl_init();

// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);

//CURLOPT_RETURNTRANSFER  设置为true时,将以字符串返回,而不是直接输出。
//curl_setopt  有非常多的参数  http://php.net/manual/zh/function.curl-setopt.php 这里列举了全部参数

// 抓取URL并把它传递给浏览器
curl_exec($ch);

//关闭cURL资源,并且释放系统资源
curl_close($ch);

发表评论

发表评论

*

沙发空缺中,还不快抢~