PHP檔案上傳例項詳解!!!

2021-04-26 07:57:43 字數 2548 閱讀 9115

最近為了象牙,有點不務正業的嫌疑,經過最近一段時間的瘋狂灌水終於拿到了象牙,嘿嘿,今天重出江湖,想到論壇似乎沒什麼為新手講的上傳例項,而這部分是很常用的,故今天獻醜為各位新鳥詳細講解下怎樣實現檔案上傳。用過asp的都知道,asp的上傳要麼購買官方的元件實現,要麼就編寫複雜的上傳類,是相當麻煩的,這裡不免要宣傳下php

,php使上傳變的非常容易且這一切都是免費的,怎麼樣,你心動了沒有?心動不如行動(好土的台詞- _ -!),趕緊跟我來吧~~~,另外說一句,斑竹如果覺得我寫的好,可要給我加精哦!!^_^

首先來看下上傳部分的表單**:

code:

這裡有幾個要注意的地方,首先看這句,

這裡我們採用post方法,個別瀏覽器還支援put方法,當然這需要對指令碼進行修改,我並不建議這麼做。表單中必須設定enctype="multipart/form-data,這樣,伺服器就知道上傳檔案帶有常規表單資訊,記住,這個是必須設定的。此外還需要乙個隱藏域來限制上傳檔案的最大長度:

,這裡name必須設定成

max_file_size,其值就是上傳檔案的最大長度,單位是b,這裡我限制成2m。再看這句:

,type="file

"說明了檔案型別,這樣乙個基本的上傳檔案介面就完成了,接下來講講如何用php來處理上傳的檔案,此外你的php.ini中設定的上傳檔案最大長度可能會影響到你的實際上傳,請根據實際情況修改,另php的上傳是先傳到臨時目錄,在移至指定目錄的,了;臨時目錄的可根據需要修改,也可使用預設值。

好的,表單提交upload.php,來看看這個頁面都有什麼:

[php]

<?php

/*****************************************

title :檔案上傳詳解

author:leehui1983(輝老大)

finish date  :2006-12-28

*****************************************/

$uploaddir = "./files/";//設定檔案儲存目錄 注意包含/   

$type=array("jpg","gif","bmp","jpeg","png");//設定允許上傳檔案的型別

$patch="http://127.0.0.1/cr_downloadphp/upload/files/";//程式所在路徑

//獲取檔案字尾名函式

function fileext($filename)

//生成隨機檔名函式   

function random($length)

return $hash;

}$a=strtolower(fileext($_files['file']['name']));

//判斷檔案型別

if(!in_array(strtolower(fileext($_files['file']['name'])),$type))

//生成目標檔案的檔名   

else

while(file_exists($uploadfile));

if (move_uploaded_file($_files['file']['tmp_name'],$uploadfile))

else}}

?>

[/php]

剛看這些你可能有點暈~~,不過不要緊,聽我講完,你就會發現其實這玩意so easy!!首先我講下原理,該程式以上傳為例,先判斷檔案型別是否為格式,若是則上傳檔案,以隨機數和時間的組合重新命名檔案(避免上傳檔案重名,這樣做很有必要!),接著上傳檔案到指定目錄,成功上傳則輸出上傳的預覽。這裡要對程式中一些函式作些解釋。先看return substr(strrchr($filename, '.'), 1), strrchar()函式有什麼作用呢,我舉個例子大家就知道,比如乙個檔案 pic.jpg,我們用 strrchr處理,strrchr(pic.jpg,'.'),它將返回.jpg,明白了嗎?該函式返回指定字元在該字串

最後出現的位置後的字元。配合 substr() 我們就可以取到jpg,這樣我們就得到了檔案的字尾名,來判斷上傳檔案是否符合指定格式。本程式把指定的格式放在乙個陣列中,實際使用時可根據需要新增。

接下來看產生隨機數檔名部分, 我們看到mt_srand()這個函式,手冊上叫他「播下乙個更好的隨機數發生器種子」,其實就是初始化乙個隨機數的函式,引數是(double)microtime() * 1000000,這裡如果不這是引數就會自動設定個隨機數,當然這不符合我們的需要,如此一來,隨機數就具備一定的長度,保證了上傳檔案不重名。接著,我們呼叫判斷檔案型別的函式,並將其轉化為小寫strtolower(fileext($_files['file']['name'])),這裡有個很關鍵的東東$_files ,這是個超級全域性陣列,儲存了需要處理的表單資料,如果開啟了register_globals,也可以直接訪問,但這是不安全的。看剛才那個上傳介面

部分,實現上傳檔案管理,審核,將發布在原創區。

2  利用目錄函式實現檔案管理,將發布在新手區

希望感興趣的朋友

屆時**~~~,謝謝!!!!!!

php上傳檔案詳解

上傳檔案 功能由兩個部分 組成,html 頁面和php 處理部分 html 頁面主要是讓使用者選 擇所要上傳的檔案 php部分讓 我們可以把檔案 儲存到伺服器的指定目錄。一 html 部分 上傳demo form action upload.php method post enctype multi...

php多檔案上傳(例項)

此處以上傳為例 html檔案 1 en 2 utf 8 3上傳 4512 1317 w1 181933 html表單部分 php檔案 1 3 created by phpstorm.4 user administrator 5 date 2018 3 20 6 time 18 287 8header...

PHP多檔案上傳例項

class files tool 3維陣列簡化成2維陣列 files array shi程式設計客棧ft files 獲取字尾 files self get ext files 處理檔案次數 n count files name for i 0 i return self path 獲取字尾的方法 ...