判断普通文件和目录
is_file():判断给定文件名是否为一个正常的文件is_dir():判断给定文件名是否为一个目录
文件的属性
file_exists():检查文件或目录是否存在filesize():取得普通文件的大小is_readable():判断给定文件名是否可读is_writable():判断给定文件名是否可写filectime():获取文件的创建时间filemtime():获取文件的修改时间fileatime():取得文件的上次访问时间stat():获取文件大部分属性值
目录的基本操作
basename():返回路径中的文件名部分dirname():返回路径中的目录部分pathinfo():返回文件路径的信息opendir():打开目录句柄readdir():从目录句柄中读取条目,返回目录中下一个文件的文件名rewinddir():倒回目录句柄closedir():关闭目录句柄mkdir():新建目录rmdir():删除指定的空目录scandir():列出指定路径中的文件和目录
文件的基本操作
fopen():打开文件或者URLfread():读取文件fgets():从文件指针中读取一行feod():测试文件指针是否到了文件结束的位置fwrite():写入文件rewind():倒回文件指针的位置flock():轻便的咨询文件锁定ftruncate():将文件截断到给定的长度fclose():关闭一个已打开的文件指针file():把整个文件读入一个数组中copy():拷贝文件unlink():删除文件file_get_contents():将整个文件读入一个字符串file_put_contents():将字符串写入文件中rename():重命名一个文件或目录readfile():读入一个文件并写入到输出缓冲
文件的上传
HTML标签需要做的上传设置
form标签属性设置
method设置为postenctype设置为multipart/form-data- form表单中设置隐藏类型的input,其中
name值设置为MAX_FILE_SIZE,VALUE值设置为需要限制的上传文件的大小(单位为字节)
在服务器端通过PHP处理文件,涉及到下面的几条信息
1、设置PHP配置文件(php.ini)
| 配置项 | 可能值 | 功能描述 |
|---|---|---|
| file_uploads | ON | 确定服务器上的PHP脚本是否可以接收HTTP文件上传 |
| memory_limit | 256M | 设置脚本可以分配的最大内存量,防止失控的脚本独占服务器内存 |
| upload_max_filesize | 50M | 限制PHP处理上传文件的最大值,此值必须小于post_max_size值 |
| post_max_size | 100M | 限制通过POST方法可以接受的信息最大值 |
| upload_tmp_dir | D:/phpstudy_pro/WWW/tmp | 上传文件存放的临时路径,可以是一个绝对路径。这个目录对于拥有此服务器进程用户必须是可写的 |
2、$_FILE多维数组:用于存储各种与上传有关的信息
-
$_FILES[‘file’][‘name’]:客户端机器文件的原名,包含拓展名 -
$_FILES[‘file’][‘size’]:已上传文件的大小,单位为字节 -
$_FILES[‘file’][‘tmp_name’]:文件上传之后,在服务器端存储的临时文件名 -
$_FILES[‘file’][‘error’]:文件上传时产生的错误
0:表示没有发生任何错误,文件上传成功
1:表示上传文件的大小超出了在PHP配置文件中upload_max_filesize选项限制的值
2:表示上传文件大小超出了HTML表单中MAX_FILE _SIZE 选项多指定的值
3:表示文件只被部分上传
4:表示没有上传任何文件 -
_FILES[‘file’][‘type’]:获取客户端上传的MIME类型,MIME类型规定了各种文件格式的类型。每种MIME类型都是由/分隔的主类型和子类型组成
3、PHP的文件上传处理函数:用于上传文件的后继处理
is_uploaded_file():判断指定的文件是否通过HTTP POST上传的move_uploaded_file():文件上传后,首先会存储与服务器的临时目录中,可以使用该函数将上传的文件移动到新位置
<?php
header("Content-type:text/html; charset=utf-8");
if(isset($_POST['submit'])){//如果点击上传执行如下代码
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
$arr = pathinfo($_FILES['myfile']['name']); //获取文件后缀
$newName = date("YmdGis").rand(1000, 9999);//获取当前日期
if(move_uploaded_file($_FILES['myfile']['tmp_name'], "uploads/{$newName}.{$arr['extension']}")){
echo "恭喜你!上传成功!";
}else{
echo "对不起!上传失败!";
}
}else{
exit("可能有攻击,请你做合法的事情!");
}
// var_dump($_FILES);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="myfile">
<input type="submit" value="开始上传" name="submit">
</form>
</body>
</html>
文件的下载
发送指定的文件MIME类型的头信息
header(“Content-type:MIME类型”);
指定下载文件的描述
header(“Content-Disposition:attachement; filename=文件名称”));
指定下载文件的大小
header(‘Content-Length:文件大小’);
读取文件内容至输出缓冲区
readfile();
<?php
$file = 'test.zip'; //文件路径
$fileinfo = finfo_open((FILEINFO_MIME_TYPE));//创建一个fileinfo资源,返回MIME类型
$mimeType = finfo_file($fileinfo, $file);//返回一个文件的信息
finfo_close($fileinfo);//关闭fileinfo资源
//发送指定的文件MIME类型的头信息
header('Content-type:'.$mimeType);
// 指定下载文件的描述
header("Content-Disposition:attachement; filename=".basename($file));
// 指定文件的大小
header("Content-Length:".filesize($file));
// 读取文件内容至输出缓冲区,返回这个文件
readfile($file);
?>

3518

被折叠的 条评论
为什么被折叠?



