在您可以使用PHP來管理您的上傳,你首先需要建設作為使用者介面的HTML表單上傳的文
件。有一個在下面的例子外觀和儲存一個編輯HTML代碼。
<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
Choose a file to upload: <input name="uploaded_file" type="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
有一些規則需要建設時遵循HTML表單。首先,請確保該表單使用POST方法。第二,形
式需要以下屬性:字元編碼=“多重/表單資料”。它指定的內容類型時使用的資訊提
交給伺服器。如果沒有這些要求,您的檔案上傳不了。
另一個需要注意的是隱藏的表單欄位名為MAX_FILE_SIZE設定的值。某些Web瀏覽器實
際上反映了這個領域,也不會允許使用者上傳檔案超過這個數字(位元組)更大。您應該
將此值設定為配合最大上傳大小,在php.ini檔案中設定。這是一套與中
upload_max_filesize,預設值是2MB的。但它仍然不能保證你的指令碼將不會轉交了尺
寸較大的檔案。危險的是,攻擊者將嘗試向您發送一個請求幾個大檔案,並填寫了文
件系統,也就是PHP儲存解碼檔案。設定在php.ini的post_max_size的指令檔案的最大
尺寸,你要(必須大於中upload_max_filesize)。預設值為10MB的。此指令控制的所
有要求,在一個允許的POST資料最大大小。另外,還要確保在你的php.ini檔案
file_uploads設定為On。
至少,有一個在輸入標記屬性看:類型=“檔案”。它是用來指定為檔案選擇控制輸入
元素。這提供了一個檔案的URI的地方,則需要鍵入一個“瀏覽”按鈕,可作為替代的
URI輸入使用。
在使用者進入一個檔案的URI,並點擊提交按鈕的檔案的副本將被發送到伺服器和使用者將
被重新導向到upload.php。此PHP檔案將處理表單資料。
返回頁首
處理表單資料(PHP代碼)
當檔案被上傳和PHP建立了一個檔案的臨時副本,並建立了超全域變數$ _FILES數組,
包含有關檔案的資訊。對於每個檔案,有5個資料。我們已上傳欄位命名
為'uploaded_file',所以會存在以下資料:
變數$ _FILES [“uploaded_file”] [“name”]從使用者的機器上傳的檔案的原名稱
變數$ _FILES [“uploaded_file”] [“type”]的上傳檔案的MIME類型(如果瀏覽器
提供的類型)
變數$ _FILES [“uploaded_file”] [“size”]的以位元組為單位上傳的檔案大小
變數$ _FILES [“uploaded_file”] [“tmp_name”],在該檔案暫時儲存在伺服器上
的位置
變數$ _FILES [“uploaded_file”] [“error”]錯誤碼從檔案上傳結果
下面的例子接受一個上傳的檔案並儲存在上傳目錄中。它允許根據350Kb上傳只有JPEG
映像。該代碼本身,是相當清楚的,但我們會作出一些解釋。有一個例子在外觀和保
存此為upload.php PHP代碼。
<?php
//Сheck that we have a file
if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error']
== 0)) {
//Check if the file is JPEG image and it's size is less than 350Kb
$filename = basename($_FILES['uploaded_file']['name']);
$ext = substr($filename, strrpos($filename, '.') + 1);
if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg")
&&
($_FILES["uploaded_file"]["size"] < 350000)) {
//Determine the path to which we want to save this file
$newname = dirname(__FILE__).'/upload/'.$filename;
//Check if the file with the same name is already exists on the
server
if (!file_exists($newname)) {
//Attempt to move the uploaded file to it's new place
if ((move_uploaded_file($_FILES['uploaded_file']
['tmp_name'],$newname))) {
echo "It's done! The file has been saved as: ".$newname;
} else {
echo "Error: A problem occurred during file upload!";
}
} else {
echo "Error: File ".$_FILES["uploaded_file"]["name"]." already
exists";
}
} else {
echo "Error: Only .jpg images under 350Kb are accepted for upload";
}
} else {
echo "Error: No file uploaded";
}
?>
在此之前的上傳您需要的檔案,以確定檔案是否真的上傳任何東西。之後我們檢查上
傳的檔案,JPEG映像,其大小小於350Kb的。接下來,我們確定的道路,這是我們要保
存此檔案,並檢查是否已經存在一個伺服器上的這些檔案的名稱。當所有檢查通過,
我們將檔案複製到一個永久的位置使用move_upload_file()函數。此功能也證實該
檔案你要過程,是一個合法的檔案從使用者上傳結果。如果該檔案上傳成功,那麼相應
的訊息將出現。
注意:要確保PHP已經允許讀取和寫入臨時檔案中儲存的位置是您要複製檔案的目錄。
這個例子其實很簡單,它的提出是為了示範如何使用PHP上傳檔案。例如,您可以添加
新的條件,並允許上傳GIF和PNG映像,或任何檔案,您需要其他種類。如果您是本教
程使用PHP不熟悉可能是一個很好的起點。