php上传压缩文件,两千行PHP学习笔记(十)文件、目录操作、文件上传、解压缩(ZipArchive对象)...

dirname($path) 返回路径中的目录部分basename($path [,$suffix]) 返回路径中的文件名部分pathinfo($path [,$options]) 返回文件路径的信息(数组元素:dirname,basename,extension)realpath($path) 返回规范化的绝对路径名copy($source, $dest) 拷贝文件unlink($file) 删除文件rename($old, $new) 重命名或移动一个文件或目录mkdir($path [,$mode [,$recursive]]) 新建目录$mode表示权限,默认0777$recursive表示可创建多级目录,默认falsermdir($dir) 删除目录(目录必须为空,且具有权限)file_exists($file) 检查文件或目录是否存在is_file($file) 判断文件是否存在且为正常的文件is_dir($file) 判断文件名是否存在且为目录is_readable($file) 判断文件或目录是否可读is_writable($file) 判断文件或目录是否可写is_executable($file) 判断给定文件名是否可执行is_link($file) 判断给定文件名是否为一个符号连接tmpfile(void) 建立一个临时文件tempnam($dir, $prefix) 在指定目录中建立一个具有唯一文件名的文件file($file) 把整个文件读入一个数组中fopen($filename, $mode [,$use_include_path])$mode参数:(加入'b'标记解决移植性)'r'只读方式打开,将文件指针指向文件头。'r+'读写方式打开,将文件指针指向文件头。'w'写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。'w+'读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。'a'写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。'a+'读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。'x'创建并以写入方式打开,将文件指针指向文件头。'x+'创建并以读写方式打开,将文件指针指向文件头。fclose($handle) 关闭一个已打开的文件指针fread($handle, $length) 读取文件(可安全用于二进制文件)fwrite($handle, $string [,$length]) 写入文件(可安全用于二进制文件)rewind($handle) 倒回文件指针的位置ftell($handle) 返回文件指针读/写的位置fseek($handle, $offset [,$whence]) 在文件指针中定位feof($handle) 测试文件指针是否到了文件结束的位置fgets从文件指针中读取一行fgetss从文件指针中读取一行并过滤掉HTML标记flock($handle, $opt) 轻便的咨询文件锁定$opt:LOCK_SH 取得共享锁定(读取的程序);LOCK_EX 取得独占锁定(写入的程序);LOCK_UN 释放锁定(无论共享或独占)readfile($file) 读入一个文件并写入到输出缓冲fflush($handle) 将缓冲内容输出到文件touch($file [,$time [,$atime]]) 设定文件的访问和修改时间fileatime取得文件的上次访问时间filectime取得文件的inode修改时间filegroup取得文件的组fileinode取得文件的inodefilemtime取得文件修改时间fileowner取得文件的所有者fileperms取得文件的权限filesize取得文件大小filetype取得文件类型 获取/设置文件信息#扩展Fileinfo,配置php.ini#extension=php_fileinfo.dll

finfo_open([$opt]) //创建一个文件信息资源

finfo_file($finfo, $file [,$opt]) //获取文件信息

finfo_set_flags($finfo, $opt) //设置文件信息项

finfo_close($finfo) //关闭文件信息资源

mime_content_type($file) //获取文件的MIME类型

$opt参数选项:

FILEINFO_MIME_ENCODING 文件编码类型

FILEINFO_MIME_TYPE 文件MIME类型//目录

chdir($dir) 改变当前目录

chroot($dir) 将当前目录改变为当前进程的根目录closedir($handle) 关闭目录句柄dir($dir) 返回一个目录的实例对象getcwd() 取得当前工作目录opendir($path) 打开目录句柄readdir($handle) 从目录句柄中读取条目rewinddir($handle) 倒回目录句柄scandir($dir [,$order]) 列出指定路径中的文件和目录glob($pattern [,$flags]) 寻找与模式匹配的文件路径$flags:

GLOB_MARK-在每个返回的项目中加一个斜线

GLOB_NOSORT-按照文件在目录中出现的原始顺序返回(不排序)

GLOB_NOCHECK-如果没有文件匹配则返回用于搜索的模式

GLOB_NOESCAPE-反斜线不转义元字符

GLOB_BRACE- 扩充 {a,b,c} 来匹配 'a','b' 或 'c'GLOB_ONLYDIR-仅返回与模式匹配的目录项

查找多种后缀名文件:glob('*.{php,txt}',GLOB_BRACE);

//新建ZipArchive对象

$zip = newZipArchive;//打开ZIP文件

$zip->open($file [,$flags]);$flags:

ZIPARCHIVE::OVERWRITE 覆盖(不存在会自动创建)

ZIPARCHIVE::CREATE 添加(不存在会自动创建)

ZIPARCHIVE::EXCL

ZIPARCHIVE::CHECKCONS//关闭正在处理的ZIP文件

//解压缩ZIP文件

$zip->extractTo($dest, [$entries]);$dest:解压到的文件夹,$entries:解压的条目//添加文件到ZIP文件

$zip->addFile($file, [$newname]);$newname可以为"dir/file",这样可以将文件添加到压缩文件中的某个目录下。其他函数也如此。//添加文件到ZIP文件,而内容来自字符串

$zip->addFromString($file, $str);//添加空文件夹到ZIP文件

$zip->addEmptyDir($dir);//通过索引删除ZIP中的文件或文件夹

$zip->deleteIndex($index);//通过名称删除ZIP中的文件或文件夹

$zip->deleteName($name);//设置ZIP文件注释

$zip->setArchiveComment($str);//获取ZIP文件注释

$zip->getArchiveComment();//通过索引获取文件内容

$zip->getFromIndex($index);//通过名称获取文件内容

$zip->getFromName($name);//获取索引文件的文件名称

$zip->getNameIndex($index);//通过索引重命名文件

$zip->renameIndex($index, $newname);//通过名称重命名文件

$zip->renameName($name, $newname);//若将文件夹内容打包成ZIP文件,需循环文件夹的所有目录及文件

function addFileToZip($path, $zip) {//打开当前文件夹$path

$handle = opendir($path);//循环读取子文件夹及文件

//为防止文件名本身可被转换为false的情况(比如为"0"),则需用不全等!==

while ($file = readdir($handle) !== false) {//过滤假文件夹

if ($file != '.' && $file != '..') {//对于子文件夹则递归调用本函数

if (is_dir($path . '/' . $file)) {

addFileToZip($path.'/'.$file, $zip);

}else{//将文件添加到ZIP对象

$zip->addFile($path . '/' . $file);

}

}

}//关闭文件夹$path

closedir($path);

}//----- END 解压缩 ----- //

enctype="multipart/form-data" //FORM标签必须的属性

$_FILES上传文件信息数组变量

error 上传错误信息0无错误1 文件大小超过php.ini配置1) upload_max_filesize 允许上传的最大文件大小2) post_max_size 最大的POST数据大小3) memory_limit 每个脚本能够使用的最大内存数量(默认128MB)2文件大小超过浏览器表单配置

MAX_FILE_SIZE 表示表单数据最大文件大小,该元素需在文件上传域之前。(默认2M)

3文件只有部分被上传4文件没有被上传6,7临时文件写入时失败6找不到临时文件7文件写入失败

name 文件名

type 文件类型

tmp_name 上传文件临时路径

size 文件大小move_uploaded_file($path, $newpath); //将上传的文件移动到新位置

is_uploaded_file($file) //判断是否为POST上传的文件

//多文件上传

//HTML中以数组提交

$_FILES['updfile']['tmp_name'][0] //服务器端可访问第一个文件的临时路径,其他属性类似

//php.ini配置

file_uploads =On 是否允许HTTP上传文件

upload_max_filesize 上传文件大小限制,默认为2M

post_max_size post方式表单数据总大小限制,默认为8M

upload_tmp_dir 上传文件临时目录,默认是系统临时目录

需设置上传文件临时目录,给其最小权限

GET方式的最大传输量为2KFORM表单中的name值可用名称加中括号的形式,在$_POST获取表单数据时,可多项提交形成数组。

比如多文件上传file,复选框提交checkbox等。

$id = $_POST['id']; //则可获得全部被选中的复选框值,形成索引数组

如果name值为:

$id = $_POST['id']; //则可获取所有name为id[...]的值,形成管理数组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值