一、文件編程:
在網(wǎng)站開(kāi)發(fā)中,我們要使用到文件的上傳和下載。
文件就是保存數(shù)據(jù)(二進(jìn)制數(shù)據(jù)、文本數(shù)據(jù)),在開(kāi)發(fā)者角度看文件就是數(shù)據(jù)源。

流.png
二、php文件操作
1、打開(kāi)文件:
<?php
$file_path = "cookie.php";
//打開(kāi)文件、該函數(shù)返回一個(gè)指向文件的指針
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/>上次修改時(shí)間(內(nèi)容被修改):".date("Y-m-d H:i:s",$file_info['mtime']);
echo "<br/>上次訪問(wèn)時(shí)間:".date("Y-m-d H:i:s",$file_info['atime']);
echo "<br/>上次change時(shí)間(該文件上一次文件所有者/文件所在組修改):".date("Y-m-d H:i:s",$file_info['ctime']);
} else {
echo "打開(kāi)文件失敗";
}
//關(guān)閉文件
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)) {
//打開(kāi)文件
$fp = fopen($file_path, "a+");
//讀內(nèi)容,并輸入
$con = fread($fp, filesize($file_path));
echo "文件的內(nèi)容是:<br/>".$con;
} else {
echo "文件不存在!";
}
//關(guān)閉文件
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、上傳文件:
操作頁(yè)面:
<!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">
請(qǐng)選擇您要上傳的文件:
<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'];
//將服務(wù)器上的臨時(shí)文件移動(dòng)到指定位置
//方法一move_upload_file($tmp_name,$destination)
//move_uploaded_file($tmp_name, "uploads/".$filename);//文件夾應(yīng)提前建立好,不然報(bào)錯(cuò)
//方法二copy($src,$des)
//以上兩個(gè)函數(shù)都是成功返回真,否則返回false
//copy($tmp_name, "copies/".$filename);
//注意,不能兩個(gè)方法都對(duì)臨時(shí)文件進(jìn)行操作,臨時(shí)文件似乎操作完就沒(méi)了,我們?cè)囋嚪催^(guò)來(lái)
copy($tmp_name, "copies/".$filename);
move_uploaded_file($tmp_name, "uploads/".$filename);
//能夠?qū)崿F(xiàn),說(shuō)明move那個(gè)函數(shù)基本上相當(dāng)于剪切;copy就是copy,臨時(shí)文件還在
//另外,錯(cuò)誤信息也是不一樣的,遇到錯(cuò)誤可以查看或者直接報(bào)告給用戶
if ($error==0) {
echo "上傳成功!";
}else{
switch ($error){
case 1:
echo "超過(guò)了上傳文件的最大值,請(qǐng)上傳2M以下文件";
break;
case 2:
echo "上傳文件過(guò)多,請(qǐng)一次上傳20個(gè)及以下文件!";
break;
case 3:
echo "文件并未完全上傳,請(qǐng)?jiān)俅螄L試!";
break;
case 4:
echo "未選擇上傳文件!";
break;
case 5:
echo "上傳文件為0";
break;
}
}