一、文件编程:
在网站开发中,我们要使用到文件的上传和下载。
文件就是保存数据(二进制数据、文本数据),在开发者角度看文件就是数据源。
二、php文件操作
1、打开文件:
<?php
$file_path = "cookie.php";
//打开文件、该函数返回一个指向文件的指针
if ($fp = fopen($file_path, "r")) {
$file_info = fstat($fp);
echo "<pre>";
print_r($file_info);
echo "</pre>";
echo "<br/>文件大小:{$file_info['size']}";
echo "<br/>上次修改时间(内容被修改):".date("Y-m-d H:i:s",$file_info['mtime']);
echo "<br/>上次访问时间:".date("Y-m-d H:i:s",$file_info['atime']);
echo "<br/>上次change时间(该文件上一次文件所有者/文件所在组修改):".date("Y-m-d H:i:s",$file_info['ctime']);
} else {
echo "打开文件失败";
}
//关闭文件
fclose($fp);
//第二种方式获取信息
echo "<br/>".filesize($file_path);
echo "<br/>".date("Y-m-d H:i:s",fileatime($file_path));
echo "<br/>".date("Y-m-d H:i:s",filectime($file_path));
echo "<br/>".date("Y-m-d H:i:s",filemtime($file_path));
?>
2、读文件:
<?php
$file_path = "test.txt";
//先判断文件是否存在
if (file_exists($file_path)) {
//打开文件
$fp = fopen($file_path, "a+");
//读内容,并输入
$con = fread($fp, filesize($file_path));
echo "文件的内容是:<br/>".$con;
} else {
echo "文件不存在!";
}
//关闭文件
fclose($fp);
?>
3、写文件:
$file_path = "test.txt";
if (file_exists($file_path)) {
//print_r($file_path);
//追加要用a+
$fp = fopen($file_path,"a+");
$content = "\r\n你好";
fwrite($fp, $content);
echo "添加成功";
} else {
echo "文件不存在!";
}
fclose($fp);
4、上传文件:
操作页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>上传文件</title>
</head>
<body>
<form action="doAction.php" method="post" enctype="multipart/form-data">
请选择您要上传的文件:
<input type="file" name="myFile" /><br/>
<input type="submit" value="上传文件"/>
</form>
</body>
</html>
doAction.php:
<?php
//$_FILES:文件上传变量
//print_r($_FILES);
$filename=$_FILES['myFile']['name'];
$type=$_FILES['myFile']['type'];
$tmp_name=$_FILES['myFile']['tmp_name'];
$size=$_FILES['myFile']['size'];
$error=$_FILES['myFile']['error'];
//将服务器上的临时文件移动到指定位置
//方法一move_upload_file($tmp_name,$destination)
//move_uploaded_file($tmp_name, "uploads/".$filename);//文件夹应提前建立好,不然报错
//方法二copy($src,$des)
//以上两个函数都是成功返回真,否则返回false
//copy($tmp_name, "copies/".$filename);
//注意,不能两个方法都对临时文件进行操作,临时文件似乎操作完就没了,我们试试反过来
copy($tmp_name, "copies/".$filename);
move_uploaded_file($tmp_name, "uploads/".$filename);
//能够实现,说明move那个函数基本上相当于剪切;copy就是copy,临时文件还在
//另外,错误信息也是不一样的,遇到错误可以查看或者直接报告给用户
if ($error==0) {
echo "上传成功!";
}else{
switch ($error){
case 1:
echo "超过了上传文件的最大值,请上传2M以下文件";
break;
case 2:
echo "上传文件过多,请一次上传20个及以下文件!";
break;
case 3:
echo "文件并未完全上传,请再次尝试!";
break;
case 4:
echo "未选择上传文件!";
break;
case 5:
echo "上传文件为0";
break;
}
}