PHP檔案基本操作及檔案的上傳和下載
此篇實現了PHP對檔案的系列操作,包括檔案的讀寫和處理、檔案的上傳、檔案的下載。
1、簡單寫檔案:file_put_contents("檔名","資料字串");//寫資料到檔案
2、簡單讀檔案:$內容1=file_get_contents(“檔名”);//從檔案中讀取內容到內容1中
//file_put_contents("ww.txt",file_get_contents("http://localhost:8080/ main.php"));//獲取網頁原始碼
3、讀檔案並輸出:readfile("ww.txt");//也可傳遞URL,內容自接輸出無需加echo等
4、讀檔案以行為單位存入陣列:$檔案行陣列=file(“檔名");
5、取目錄名:dirname($檔案路徑字串)//返回目錄字串
6、獲取檔名:basename("字串");//獲取檔名
7、建立目錄:mkdir(“目錄名字串“)//建立的目錄必須是一個,存在會出現錯誤//第二個引數如:0777
8、刪除空目錄:rmdir("空目錄名");//返回bool
9、建立檔案:touch("檔名")//返回bool
10、刪除檔案:unlink("檔名或檔名路徑");
11、檢查檔案或目錄是否存在:file_exists(“檔案字串”)//返回bool
12、基本判斷(內容必須存在):判斷是否是目錄【is_dir(“字串”)】、 判斷是否是檔案【is_file(“字串”)】
13、獲取檔案修改時間:filemtime("檔案字串");//返回時間戳
14、獲取檔案大小:filesize("檔案字串");//返回位元組數
15、檔案重新命名和移動:rename(“原檔案”,"新檔案");//返回bool
16、檔案複製:copy("原檔案","新檔案");//返回bool
17、檔案許可權:【is_readable()】、【is_writable()】【is_executable()】//讀 寫 執行
18、目錄分隔符:DIRECTORY_SEPARATOR;//在liux系統為“/”,在win下為“\”
19、換行符:PHP_EOL//在liux系統為“\n”,在win下位“\r\n”
20、獲取磁碟總大小:echo disk_total_space("C:");//返回位元組數
21、獲取磁碟可用空間總大小:echo disk_free_space("C:");//返回位元組數
echo "C磁碟總大小:".round(disk_total_space("C:")/pow(2,30),2)."G";//列印以G為單位大小
22、目錄:當前目錄(點加斜槓)【 . / 】,上級目錄(點點加斜槓)【 . . / 】
23、列印目錄下檔案:print_r(glob("dirdong/*php"));//獲取資料夾dirdong下的php檔案,無到子目錄
24、遍歷資料夾:
1 $dir=opendir("./dirdong");//開啟檔案資源 2 while($fi=readdir($dir)){//迴圈 3 if(is_dir("./dirdong/".$fi)) echo "目錄:".$fi."<br/>"; 4 if(is_file("./dirdong/".$fi)) echo "檔案:".$fi."<br/>"; 5 } 6 closedir($dir);//關閉檔案資源
25、利用檔案指標的方式讀寫檔案:
1 /*開啟模式: 2 3 r 只讀方式,檔案指標處於開始 4 r+ 讀寫方式,檔案指標處於開始,檔案無報錯 5 w 只寫方式,檔案指標處於開始 6 w+ 讀寫方式,檔案指標處於開始,檔案無則建立 7 a 寫追加方式,檔案指標處於末尾,檔案無則建立 8 a+ 讀寫方式,檔案指標處於末尾,檔案無則建立 9 rb wb 二進位制讀寫方式 10 rt wt 文字方式讀寫方式 11 12 */ 13 $f=fopen("ww.txt","r+");//開啟檔案 ww.txt 資源 14 15 fseek($f,3);//從前往後移動檔案指標3個位元組 16 17 fseek($f,-2,SEEK_END);//從後往前移動檔案指標2個位元組 18 19 rewind($f);//將指標陣列移動至開頭 20 21 echo ftell($f);//檢視檔案指標位置 22 23 //迴圈讀取檔案內容 24 //while(!feof($f)){//判斷檔案結尾 25 //echo fgetc($f);//只讀取一個位元組 26 //} 27 28 //echo fgets($f);//一次讀一行 29 30 //echo fread($f,2);//讀取兩個位元組 31 32 33 //fwrite($f,"32w東小東\nxxx");//寫內容 34 35 fclose($f);//關閉檔案資源
26、檔案鎖,防止同時操作檔案造成資料絮亂:
1 flock($f,LOCK_EX);//設定寫鎖,返回bool 2 flock($f,LOCK_SH);//設定讀鎖,返回bool 3 //檔案讀寫操作 4 flock($f,LOCK_UN);//釋放鎖,返回bool
27、檔案上傳到伺服器:
HTML:
1 <form action="wan.php" method="post" enctype="multipart/form-data"> 2 3 <input type="text" name="namexx"> 4 <br> 5 <input type="file" name="filexx"> 6 <br/> 7 <input type="submit" value="東小東上傳"> 8 </form>
PHP:
1 //error_reporting("E_ALL & ~ E_NOTICE"); 2 echo '<meta charset="utf-8">';//解決亂碼問題 3 //post資料,無檔案資料 4 print_r($_POST); 5 //檔案資料 名字,型別,零時目錄,大小等 6 print_r($_FILES["filexx"]); 7 //設定儲存地址 8 $filepath="img/".$_POST["namexx"]; 9 //拷貝零時檔案到儲存目錄 10 if(move_uploaded_file($_FILES["filexx"]["tmp_name"],$filepath)){ 11 echo "上傳成功"; 12 }else{ 13 echo "上傳失敗"; 14 }
檔案上傳錯誤值:
28、多檔案上傳基本思路:利用檔案陣列
1 <input type="file" name="filexx[]"> 2 <input type="file" name="filexx[]">
29、檔案下載:通過返回頭告訴客戶端此為附件即可
1 //告訴瀏覽器此檔案為附件(可下載,不用瀏覽器解析) 2 header("Content-Disposition:attachment;filename=任意檔名1"); 3 //輸出內容 4 readfile("任意檔名1");