亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

PHP特點之文件上傳1——使用POST方法上傳單文件和多文件

瀏覽:19日期:2022-09-15 13:37:37

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

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

Note:?相關的設置

請參閱?php.ini?的?file_uploads,upload_max_filesize,upload_tmp_dirpost_max_size?以及?max_input_time?設置選項。

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 設置中的上傳文件最大值是不會失效的。但是最好還是在表單中加上此項目,因為它可以避免用戶在花時間等待上傳大文件之后才發現文件過大上傳失敗的麻煩。

注意:

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

全局變量?$_FILES?自 PHP 4.1.0 起存在(在更早的版本中用?$HTTP_POST_FILES?替代)。此數組包含有所有上傳的文件信息。

以上范例中?$_FILES?數組的內容如下所示。我們假設文件上傳字段的名稱如上例所示,為?userfile。名稱可隨意命名。

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

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

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

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

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

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

Example #2 使文件上傳生效

請查閱函數?is_uploaded_file()?和?move_uploaded_file()?以獲取進一步的信息。以下范例處理由表單提供的文件上傳。

<?php// 在PHP4.1.0版本以前, 應該使用$HTTP_POST_FILES來替代$_FILES.$uploaddir = ’/var/www/uploads/’;$uploadfile = $uploaddir . basename($_FILES[’userfile’][’name’]);echo ’<pre>’;if (move_uploaded_file($_FILES[’userfile’][’tmp_name’], $uploadfile)) { echo 'File is valid, and was successfully uploaded.n';} else { echo 'Possible file upload attack!n';}echo ’Here is some more debugging info:’;print_r($_FILES);print '</pre>';?>

接受上傳文件的 PHP 腳本為了決定接下來要對該文件進行哪些操作,應該實現任何邏輯上必要的檢查。例如可以用?$_FILES[’userfile’][’size’]?變量來排除過大或過小的文件,也可以通過?$_FILES[’userfile’][’type’]?變量來排除文件類型和某種標準不相符合的文件,但只把這個當作一系列檢查中的第一步,因為此值完全由客戶端控制而在 PHP 端并不檢查。自 PHP 4.2.0 起,還可以通過?$_FILES[’userfile’][’error’]?變量來根據不同的錯誤代碼來計劃下一步如何處理。不管怎樣,要么將該文件從臨時目錄中刪除,要么將其移動到其它的地方。

如果表單中沒有選擇上傳的文件,則 PHP 變量?$_FILES[’userfile’][’size’]?的值將為 0,$_FILES[’userfile’][’tmp_name’]?將為空。

如果該文件沒有被移動到其它地方也沒有被改名,則該文件將在表單請求結束時被刪除。

Example #3 上傳一組文件

PHP 的?HTML 數組特性甚至支持文件類型。

<form action='' method='post' enctype='multipart/form-data'><p>Pictures:<input type='file' name='pictures[]' /><input type='file' name='pictures[]' /><input type='file' name='pictures[]' /><input type='submit' value='Send' /></p></form><?phpforeach?($_FILES['pictures']['error']?as?$key?=>?$error)?{????if?($error?==?UPLOAD_ERR_OK)?{????????$tmp_name?=?$_FILES['pictures']['tmp_name'][$key];????????$name?=?$_FILES['pictures']['name'][$key];????????move_uploaded_file($tmp_name,?'data/$name');????}}?>

標簽: PHP
相關文章:
主站蜘蛛池模板: 91久久亚洲国产成人精品性色 | 国内自拍一区 | 午夜黄色大片 | 欧美午夜激情影院 | 中文一区二区在线观看 | 日日插天天操 | 亚洲午夜18 | 91在线视频观看 | 午夜伦情电午夜伦情影院 | 欧美日韩一区在线观看 | 色婷婷777| 最近手机中文在线视频 | 成人在线观看网站 | 亚洲第一成年免费网站 | 成人性视频免费网站 | 女人被免费看在线看 | 2020狠狠操 | 亚洲精品国产精品乱码不97 | 国产成人盗拍精品免费视频 | 国内自拍欧美 | 亚洲免费在线播放 | 鸥美黄色片 | 久久精品视频1 | 国产福利足控交在线观看 | 久久免费视频精品 | 久久91精品国产91久久麻豆 | 国产床戏做爰免费观看网站 | 19国产精品麻豆免费观看 | 麻豆影视在线播放 | 一区二区三区在线免费观看视频 | 亚洲图色视频 | 黄色网毛片| 五月婷婷在线视频 | 视频一区二区三区自拍 | xxxxx爽日本护士在线播放 | 女人色毛片女人色毛片中国 | 在线观看黄网视频免费播放 | 成人精品区 | 亚洲理论在线观看 | 午夜日b视频 | 成人免费视频无遮挡在线看 |