上傳文件
允許用戶上傳文件是必要的,許多網站,所以,我們如何做到這一點,正是?但話又說回來,有一些方便的書面文件上。審議了麻煩呢?那麼,這裡的一些幫助是稍微更容易消化。
首先,您需要HTML網頁的形式將謊言。這種形式必須確定文件最大規模的上傳,並必須有文件上傳領域本身
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
MAX_FILE_SIZE界定的盡可能多的文件大小,以字節為單位,當然。名稱屬性上傳領域(指定的檔案價值的type屬性)的重要組成部分,正如我們稍後將使用此在我們的腳本來知道哪些要上傳的文件(這是用來支持多種上傳) 。
下一步,我們要上傳文件。但首先,重要的是要理解美元_FILE [ ]數組。
在美元_FILE [ ]數組,有一個項目,每一個領域中上傳的形式發送用戶此腳本。因此,在我們的案例,有一個指數命名為' userfield ' ,為一個外地與這個名字在我們的形式。每個值的數組也是一個關聯數組,以下項和值(改寫明確從文件) :
<?php
$target_file = '/path/to/upload/'.basename($_FILES['userfile']['name']);
?>
關鍵價值
'名稱'文件名使用客戶的計算機。
'型'的MIME類型的文件(如圖像/ gif格式) 。該浏覽器並不總是提供這方面的,和價值不應假定是正確的。
'大小'的大小上傳的文件(以字節為單位) 。
' tmp_name '的文件給上傳的文件,其中應立即轉移,並更名後的成功上傳。地點是無關緊要的,因為你使用的方法把文件( move_uploaded_file ,我使用後)都知道的位置。
'錯誤'的錯誤代碼(或成功的代碼,如果0 )的問題發生在上傳。 (錯誤代碼)
表1 :簡要介紹了鑰匙和價值觀
所以,現在我們可以開始進行業務。首先,我們得到的文件名,我們將想給上傳的文件,而且目錄,我們希望把它。
<?php
$target_file = '/path/to/upload/'.basename($_FILES['userfile']['name']);
?>
使用basename是絕對必要的。沒有這一點,您正在運行一個巨大的安全風險。如果用戶要上傳文件的名稱,開始使用相對路徑上升,如../../../, ,他們最終將得到根除,可以隨時隨地浏覽到的文件的落實更多的目錄後,原來的起點的道路。
警告:這是非常重要的是,可以確保服務器的權限寫信給這個目錄。如果您的服務器正在運行的任何發行版的Linux或Mac OS X ,您可能會需要屬性的目錄。
下一步,您只需將上傳的文件為target_file 。我認為這樣做的,如果為了試驗的成功。
<?php
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $target_file)) {
// Succeeded
echo 'Yay!';
} else {
// Failed
echo 'No!';
}
?>
這真的就是這麼回事。很簡單,啊?您可以展開這一點,通過閱讀PHP的文件序列和unserializing對象。如果您有任何疑問,可隨時張貼的論壇。