1. 程式人生 > >PHP檔案基本操作及檔案的上傳和下載

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");