用php對檔案上傳處理過程的進一步說明

來源:互聯網
上載者:User

向伺服器上傳檔案,是我們做項目時經常用的一種技術。做過ASP開發的知道,ASP對上傳檔案很無耐,至少得需要借組其它手段,如自己寫VB代碼、利用免費上傳組件等,可謂痛苦之極。好在PHP開發人員為我們寫好上傳函數,使PHP可以輕而易舉上傳文字檔、甚至二進位檔案。所以在進行ASP開發的戰友們,快快轉行到我們的PHP開發吧,呵呵~~

一、上傳單個檔案

您可以如下建立一個特殊的表單來支援檔案上傳:

檔案上傳表單

<form enctype="multipart/form-data" action="URL" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
<input name="myFile" type="file">
<input type="submit" value="上傳檔案">
</form>

這裡的URL應該指向一個處理上傳檔案的 PHP 檔案。 MAX_FILE_SIZE隱藏欄位必須在檔案輸入欄位之前,且其值為接受檔案的最大尺寸,單位是位元組。 注意,該值實際上並不能真正地在用戶端控制上傳檔案的大小。

上傳動作產生的檔案資訊存放於特定的數組中,數組的名字會根據PHP的版本和設定檔的設定不同而不同。全域變數 _FILES 數組從PHP4.1.0版本就已經開始支援了。而 $HTTP_POST_FILES 數組是從PHP4.0.0開始支援的。 不過這裡推薦您使用 _FILES 數組,因為php.ini裡的 register_globals 設定為 off 時,相關的變數名還可以使用,而且從PHP4.2.0版本開始,它已經設定為 off 。這裡也不主張您改為 ON。

在剛才的表單後面加上phpinfo();函數,提交一下表單,就會看到 _FILES 數組的內容:

$_FILES['myFile']['name']  用戶端檔案的原名稱,同ON時的 $myFile_name,下同。

$_FILES['myFile']['type']  檔案的 MIME 類型,需要瀏覽器提供該資訊的支援,例如“image/gif”。

$_FILES['myFile']['size']  已上傳檔案的大小,單位為位元組。

$_FILES['myFile']['tmp_name']  檔案被上傳後在服務端儲存的臨時檔案名稱,一般是系統預設。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函數設定是不起作用的。

$_FILES['myFile']['error']  和該檔案上傳相關的錯誤碼。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的說明:(它們在PHP3.0以後成了常量)

UPLOAD_ERR_OK

值:0; 沒有錯誤發生,檔案上傳成功。

UPLOAD_ERR_INI_SIZE

值:1; 上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值。

UPLOAD_ERR_FORM_SIZE

值:2; 上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。

UPLOAD_ERR_PARTIAL

值:3; 檔案只有部分被上傳。

UPLOAD_ERR_NO_FILE

值:4; 沒有檔案被上傳。

值:5; 上傳檔案大小為0.

檔案被上傳結束後,預設地被儲存在了臨時目錄中,這時您必須將它從臨時目錄中刪除或移動到其它地方,如果沒有,則會被刪除。也就是不管是否上傳成功,指令碼執行完後臨時目錄裡的檔案肯定會被刪除。所以在刪除之前要用PHP的 copy() 函數將它複製到其它位置,此時,才算完成了我們的上傳檔案過程。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.