PHP接口上傳文件圖片詳解

簡介

  PHP在處理POST文件上傳使用一個文件上傳變量$_FILES 和 $HTTP_POST_FILES(已棄用)。相同點:$FILES和$HTTP_POST_FILES包含相同的信息。不同點:$FILES是一個“超全局變量”,$HTTP_POST_FILES並不是超全局變量。

介紹$_FILES

POST 方法上傳 ¶

本特性可以使用戶上傳文本和二進制文件。用 PHP 的認證和文件操作函數,可以完全控制允許哪些人上傳以及文件上傳後怎樣處理。

PHP 能夠接受任何來自符合 RFC-1867 標準的瀏覽器(包括 Netscape Navigator 3 及更高版本,打了補丁的 Microsoft Internet Explorer 3 或者更高版本)上傳的文件。

Example #1 文件上傳表單
可以如下建立一個特殊的表單來支持文件上傳:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

以上範例中的 URL 應該被換掉,指向一個真實的 PHP 文件。

MAX_FILE_SIZE 隱藏字段(單位爲字節)必須放在文件輸入字段之前,其值爲接收文件的最大尺寸。這是對瀏覽器的一個建議,PHP 也會檢查此項。在瀏覽器端可以簡單繞過此設置,因此不要指望用此特性來阻擋大文件。實際上,PHP 設置中的上傳文件最大值是不會失效的。但是最好還是在表單中加上此項目,因爲它可以避免用戶在花時間等待上傳大文件之後才發現文件過大上傳失敗的麻煩。

Note:

要確保文件上傳表單的屬性是 enctype="multipart/form-data",否則文件上傳不了。

Note: 相關的設置

請參閱 php.ini 的 file_uploads,upload_max_filesize,upload_tmp_dirpost_max_size 以及 max_input_time 設置選項。
全局變量$_FILES自PHP 4.1.0起存在(在更早的版本中用$HTTP_POST_FILES)。

$_FILES數組中含有的內容,假設上傳字段的名稱爲:updateFile。上傳字段名字可以隨意取名。
$_FILES[“updateFile”]就是我們上傳文件的信息。

文件詳細信息介紹

$_FILES[‘updateFile’][‘name’] :客戶端機器文件的原名稱。

$_FILES[‘updateFile’][‘type’] 文件的 MIME 類型,如果瀏覽器提供此信息的話。一個例子是“image/gif”。不過此 MIME 類型在 PHP 端並不檢查,因此不要想當然認爲有這個值。

$_FILES[‘updateFile’][‘size’] 已上傳文件的大小,單位爲字節。

$_FILES[‘updateFile’][‘tmp_name’]文件被上傳後在服務端儲存的臨時文件名。

$_FILES[‘updateFile’][‘error’] 和該文件上傳相關的錯誤代碼。此項目是在 PHP 4.2.0 版本中增加的。

文件被上傳後,默認地會被儲存到服務端的默認臨時目錄中,除非 php.ini 中的 upload_tmp_dir 設置爲其它的路徑。服務端的默認臨時目錄可以通過更改 PHP 運行環境的環境變量 TMPDIR 來重新設置,但是在 PHP 腳本內部通過運行 putenv() 函數來設置是不起作用的。該環境變量也可以用來確認其它的操作也是在上傳的文件上進行的。

上傳文件之後,可以通過 is_uploaded_file() 和 move_uploaded_file() 對文件進行處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章