一、檔案上傳
通過PHP,可以將檔案上傳到伺服器。資料向伺服器端提交資料可以通過form、post方式,但是post不能提交檔案類型的資料資訊。
1>php檔案上傳指令配置
file_uploads=on|off
確定伺服器上的PHP指令碼是否可以接受檔案上傳。
max_execution_time=integer
PHP指令碼在註冊一個致命錯誤之前可以執行的最長時間,以秒為單位。
memory_limit=integer
設定指令碼可以分配到的最大記憶體,以MB為單位。這可以防止失控的指令碼獨佔伺服器記憶體。
upload_max_filesize=integer
設定上傳檔案最大大小,以MB為單位。
upload_tmp_dir=string
設定上傳檔案在處理之前必須存放在伺服器的臨時一個位置,直到檔案移動到最終目的地為止。
post_max_size=integer
確定通過POST方法可以接受的資訊的最大大小,以MB為單位。
2>$_FILES數組
<form action="upload_file.php" method="post"enctype="multipart/form-data"> <label for="file">上傳檔案:</label> <input type="hidden" name="MAX_FILE_SIZE" value="1000"/> <input type="file" name="file" id="file" /> <img id="preview"> <br /> <input type="submit" name="submit" value="Submit" /></form>
ENCTYPE=”multipart/form-data”:
這裡是固定寫法,否則檔案上傳失敗。
ACTION=”upload.php”:
定義要處理上傳的程式檔案路徑 。
METHOD=”post”:
定義傳輸方式為POST,一般情況下Form提交資料都設定為POST。
<input type=”hidden” name=”MAX_FILE_SIZE” value=”1000000”>
這是一個隱藏欄位,定義了上傳檔案的大小上限,超過這個值時,上傳失敗。它必須定義在檔案上傳域的前面.而且這裡定義的值不 能超過在php.ini 檔案中upload_max_filesize設定的值,否則沒有意義了.(注意:MAX_FILE_SIZE 的值只是對瀏覽器的一個建議,實際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望於該值。實際上,PHP.ini設定中的上傳檔案最大值,是不會 失效的。但是最好還是在表單中加上 MAX_FILE_SIZE,因為它可以避免使用者在花時間等待上傳大檔案之後才發現該檔案太大了的麻煩。)
\
這是檔案上傳域,Type屬性必須設定為file,但Name屬性可以自訂,這個值會在代碼檔案中使用。
<?php print_r($_FILES);?>
$_FILES超級全域變數,它儲存各種與上傳有關的資訊,這些資訊對於通過PHP指令碼上傳到伺服器的檔案至關重要。
1. 儲存在
_FILES[“file”][“name”]變數中的值就是使用者系統中的檔案名稱。
3. 儲存在_FILES[“file”][“type”]變數中的值就是檔案的MIME類型,例如:text/plain或image/gif。
5. 儲存在$_FILES[“file”][“error”]變數中的值將是任何與檔案上傳相關的錯誤碼。這是在PHP4.2.0中增加的新特性。
error分別提供了一些常數陣列:
+ 0:表示沒有發生錯誤。
+ 1:表示上傳檔案的大小超出了約定值。檔案大小的最大值是PHP設定檔中指定的,該指令是upload_max_filesize。
+ 2:表示上傳檔案大小超出了HTML表單的MAX_FILE_SIZE元素所指定的最大值。
+ 3:表示檔案只被部分上傳。
+ 4:表示沒有上傳任何檔案。
3>上傳函數
PHP還提供了兩個專門用於檔案上傳過程的函數:is_uploaded_file()和move_uploaded_file()。
//確定是否上傳檔案if (is_uploaded_file($_FILES["file"]["tmp_name"])) { echo '已經上傳到臨時檔案夾'; $filename = "upload".time()."png"; //移動上傳檔案(將檔案移動到指定檔案夾) if (!move_uploaded_file($_FILES["file"]["tmp_name"],img/,$filename)) { echo '移動失敗'; exit; }else{ echo "移動成功"; }} else { echo '失敗';}
二、檔案目錄
將相關的資料群組織為檔案和目錄等實體,程式員需要有一種方法來獲得關於檔案和目錄的重要細節,如位置、大小、最後修改時間、最後訪問時間和其他確定資訊。
1>目錄操作
+ 獲得當前檔案路徑
1. __FILE__
當前檔案路徑+當前檔案名稱
2. __DIR__
當前檔案路徑
3. dirname(__FILE__)
當前檔案路徑
4. basename(__FILE__)
當前檔案名稱
5. pathinfo(__FILE__)
關於路徑的資訊的關聯陣列,其中包括:目錄名、基本名和副檔名
6. realpath(__FILE__)
絕對路徑(前提 在當前項目下確實存在這個檔案 才能擷取絕對路徑,只能讀當前檔案中對應的檔案路徑資訊)
__FILE__ 和 __DIR__是針對當前檔案,dinrname()和basename()是針對任意檔案路徑
2>磁碟、目錄和檔案大小計算
1. 檔案大小
filesize($path)
計算該檔案大小,位元組為單位。
$file = __FILE__;echo round(filesize($file)/1024).'KB';
磁碟可用空間大小
disk_free_space()
指定的目錄所在磁碟分割的可用空間。
$drive = 'C:';echo round(disk_free_space($drive)/1024/1024/1024,2).'GB';
磁碟的總容量
disk_total_space()
指定的目錄所在磁碟分割的總容量。
$drive = 'C:';echo round(disk_total_space($drive)/1024/1024/1027,2).'GB';