您好,登錄后才能下訂單哦!
小編給大家分享一下PHP中如何處理上傳文件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
php是最好的語言(其他語言的程序猿們不要打我...)。php在處理交互方面有天然的優(yōu)勢,自然有強大的函數(shù)來處理上傳文件。
和提交一般的數(shù)據(jù)一樣,上傳文件也需要表單。下面建立一個特殊的表單來上傳文件。
<form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post"> <!--MAX_FILE_SIZE必須在所有的input之前,以后要是想用上傳表單,可以在form之后就寫隱藏的input--> <input type="hidden" name="MAX_FILE_SIZE" value=""/> 上傳的文件: <input type="file" name="userfile"/> <input type="submit" name="sub_button" value="上傳文件的提交按鈕"/> </form>
ok,我們分析一下這個代碼段。
以上的enctype規(guī)定了數(shù)據(jù)在發(fā)送給服務(wù)器的時候采用什么編碼格式。它有三個值:
MAX_FILE_SIZE隱藏字段(單位為字節(jié))必須放在文件輸入字段之前,其值為文件的最大尺寸。這是對瀏覽器的一個建議,php也會檢查此項。不過在瀏覽器端可以繞過這個障礙,因此不要指望用它來阻擋大文件。但是文件最大值受php.ini中的post_max_size= (number)M的限制。但是最好還是加上這個項目,它可以避免用戶在花時間等待上傳大文件之后才發(fā)現(xiàn)大文件上傳失敗的麻煩。
在用戶提交文件表單之后,服務(wù)器端就可以接受數(shù)據(jù)了。PHP中有全局變量$_FILES來處理文件,假設(shè)上傳字段名稱為userfile(可以在字段中隨意更改)。
$_FILES['userfile']['name'] 客戶端文件的原名稱。
$_FILES['userfile']['type'] 文件的MIME類型,這個在PHP端并不檢查,因此這個值還不一定有。
$_FILES['userfile']['size'] 上傳的文件的大小(單位字節(jié))。
$_FILES['userfile']['tmp_name'] 文件上傳后在服務(wù)器端存儲的臨時文件名。
$_FILES['userfile']['error'] 和該文件上傳相關(guān)的錯誤代碼。如果上傳成功,值為0.
文件在上傳后,默認(rèn)存儲到服務(wù)器默認(rèn)臨時目錄中,在php.ini中的upload_tmp_dir設(shè)置為其他路徑。
在這里還得說說一個move_uploaded_file()函數(shù):
這個函數(shù)檢查并確保由 file 指定的文件是合法的上傳文件(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果文件合法,則將其移動為由 newloc 指定的文件。
如果 file 不是合法的上傳文件,不會出現(xiàn)任何操作,move_uploaded_file() 將返回 false。
如果 file 是合法的上傳文件,但出于某些原因無法移動,不會出現(xiàn)任何操作,move_uploaded_file() 將返回 false,此外還會發(fā)出一條警告。
這種檢查顯得格外重要,如果上傳的文件有可能會造成對用戶或本系統(tǒng)的其他用戶顯示其內(nèi)容的話。
下面是一個php上傳文件實例:
<b>上傳文件處理</b> <?php if (isset($_FILES['userfile'])) { $uploaddir = 'upload/'; $uploadfile = $uploaddir . basename($_FILES['userfile']['name']); echo '<pre>'; if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo '上傳文件成功'.'<br>'; } else { echo '上傳文件失敗'.'<br>'; } echo '這是上傳文件的一些信息:' . '<br>'; print_r($_FILES); echo '<pre>'; die(); } ?> <b>上傳表單</b> <!--表單中的enctype屬,必須和以下定義保持一致--> <form enctype="multipart/form-data" action="upload_file.php" name="upload_form" method="post"> <!--MAX_FILE_SIZE必須在所有的input之前,以后要是想用上傳表單,可以在form之后就寫隱藏的input--> <input type="hidden" name="MAX_FILE_SIZE" value=""/> 上傳的文件: <input type="file" name="userfile"/> <hr/> <input type="submit" name="sub_button" value="上傳文件的提交按鈕"/> </form>
以上是“PHP中如何處理上傳文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。