12.4.2 文件上傳的處理

12.4.2 文件上傳的處理

在服務(wù)器端通過(guò)PHP處理上傳

上傳文件的接收和處理是通過(guò)PHP腳本來(lái)處理的蚯舱,具體需要通過(guò)以下三個(gè)方面信息:
設(shè)置PHP配置文件中的指令:用于精細(xì)地調(diào)節(jié)PHP的文件上傳功能改化。
$_FILES多維數(shù)組:用于存儲(chǔ)各種與上傳文件有關(guān)的信息,其他數(shù)據(jù)還是使用$_POST獲取枉昏。
PHP的文件上傳處理函數(shù):用于上傳文件的后續(xù)處理陈肛。

存儲(chǔ)在$_FILES["myfile"]["error"]中的值

伴隨文件上傳時(shí)產(chǎn)生的錯(cuò)誤信息代碼是在PHP4.2.0版本中引入的,具體如下:
值為0:表示沒(méi)有發(fā)生任何錯(cuò)誤兄裂。
值為1:表示上傳文件的大小超出了約定值句旱。文件大小的最大值是在PHP配置文件中指定的阳藻,該指令是:upload_max_filesize。
值為2:表示上傳文件大小超出了HTML表單隱藏域?qū)傩缘腗AX_FILE_SIZE元素所指定的最大值谈撒。
值為3:表示文件只被部分上傳腥泥。
值為4:表示沒(méi)有上傳任何文件。
值為6:表示找不到臨時(shí)文件夾啃匿。PHP 4.3.10 和 PHP 5.0.3 引進(jìn)蛔外。
值為7:表示文件寫(xiě)入失敗。PHP 5.1.0 引進(jìn)溯乒。

錯(cuò)誤值對(duì)應(yīng)的常量

UPLOAD_ERR_OK : 對(duì)應(yīng)值0
UPLOAD_ERR_INI_SIZE : 對(duì)應(yīng)值1
UPLOAD_ERR_FORM_SIZE : 對(duì)應(yīng)值2
UPLOAD_ERR_PARTIAL : 對(duì)應(yīng)值3
UPLOAD_ERR_NO_FILE : 對(duì)應(yīng)值4
UPLOAD_ERR_NO_TMP_DIR : 對(duì)應(yīng)值6
UPLOAD_ERR_CANT_WRITE : 對(duì)應(yīng)值7

常見(jiàn)數(shù)據(jù)格式(MIME)

07.png

upload.html

<form action="upload.php" method="post" enctype="multipart/form-data" >
    name: <input type="text" name="username" value="" /><br>
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
    up pic: <input type="file" name="pic" value=""><br>

    <input type="submit" value="upload" /><br>

</form> 

test.php

<?php
header("Content-Type:text/html;charset=utf-8");
/*
Array
(
    [pic] => Array
        (
            [name] => 195_4074_831a070561e20a0.jpg
            [type] => image/jpeg
            [tmp_name] => C:\wamp\tmp\php45.tmp
            [error] => 0
            [size] => 43274
        )

)
 * *
 *
 *
 */
    //第一步: 判斷錯(cuò)誤
    if($_FILES['pic']['error'] > 0) {
        switch($_FILES['pic']['error']) {
            case 1:
                echo "表示上傳文件的大小超出了約定值夹厌。文件大小的最大值是在PHP配置文件中指定的,該指令是:upload_max_filesize<br>";
                break;
            case 2:
                echo "表示上傳文件大小超出了HTML表單隱藏域?qū)傩缘腗AX_FILE_SIZE元素所指定的最大值1M<br>";
                break;
            case 3:
                echo "表示文件只被部分上傳<br>";
                break;
            case 4:
                echo "表示沒(méi)有上傳任何文件<br>";
                break;
        
            default:
                echo "末知錯(cuò)誤<br>";
                break;
        }
    
        

        exit;
    }

    //第二步: 判斷類(lèi)型
    $arr = explode(".", basename($_FILES['pic']['name']));
    $hz = array_pop($arr);
    
    $allowtype =array("gif", "png", "jpg", "jpeg");

    if(!in_array($hz, $allowtype)) {
        echo "上傳的類(lèi)型不合法";
        exit;
    } 

    //第三步: 判斷大小
    $maxsize= 1000000;
    if($_FILES['pic']['size'] > $maxsize) {
        echo "上傳的文件超過(guò)了裆悄,{$maxsize}字節(jié)!";
        exit;
    }


    //第四步矛纹, 上傳后的文件名一定要設(shè)置

    $tmpfile = $_FILES['pic']['tmp_name'];
    $srcname = "./uploads/".date("YmdHis").rand(100, 999).".".$hz;

    //將臨時(shí)目錄下的上傳的文件,復(fù)制到我指定目錄下光稼, 指定的名子就可以完成上傳
    if( move_uploaded_file($tmpfile, $srcname) ) {
        echo "上傳成功!";
    }else{
        echo "上傳失敗!";
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末或南,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钟哥,更是在濱河造成了極大的恐慌迎献,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,294評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腻贰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡扒秸,警方通過(guò)查閱死者的電腦和手機(jī)播演,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伴奥,“玉大人写烤,你說(shuō)我怎么就攤上這事∈搬悖” “怎么了洲炊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,790評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)尼啡。 經(jīng)常有香客問(wèn)我暂衡,道長(zhǎng),這世上最難降的妖魔是什么崖瞭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,595評(píng)論 1 284
  • 正文 為了忘掉前任狂巢,我火速辦了婚禮,結(jié)果婚禮上书聚,老公的妹妹穿的比我還像新娘唧领。我一直安慰自己藻雌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,718評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布斩个。 她就那樣靜靜地躺著胯杭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪受啥。 梳的紋絲不亂的頭發(fā)上歉摧,一...
    開(kāi)封第一講書(shū)人閱讀 49,906評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音腔呜,去河邊找鬼叁温。 笑死,一個(gè)胖子當(dāng)著我的面吹牛核畴,可吹牛的內(nèi)容都是我干的膝但。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼谤草,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跟束!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起丑孩,我...
    開(kāi)封第一講書(shū)人閱讀 37,797評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤冀宴,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后温学,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體略贮,經(jīng)...
    沈念sama閱讀 44,250評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,570評(píng)論 2 327
  • 正文 我和宋清朗相戀三年仗岖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逃延。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,711評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轧拄,死狀恐怖揽祥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情檩电,我是刑警寧澤拄丰,帶...
    沈念sama閱讀 34,388評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站俐末,受9級(jí)特大地震影響料按,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鹅搪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,018評(píng)論 3 316
  • 文/蒙蒙 一站绪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丽柿,春花似錦恢准、人聲如沸魂挂。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,796評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涂召。三九已至,卻和暖如春敏沉,著一層夾襖步出監(jiān)牢的瞬間果正,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工盟迟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秋泳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,461評(píng)論 2 360
  • 正文 我出身青樓攒菠,卻偏偏與公主長(zhǎng)得像迫皱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辖众,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,595評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 文件上傳 客戶端上傳設(shè)置 在B/S程序中文件上傳已經(jīng)成為一個(gè)常用功能卓起。其目的是客戶可以通過(guò)瀏覽器(Browser)...
    dptms閱讀 957評(píng)論 0 0
  • Cookie php可以在用戶感知不到的情況下支持HTTP cookie,cookie是在客戶端瀏覽器存儲(chǔ)的用戶來(lái)...
    小羊羊愛(ài)吃飯閱讀 364評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)蚕键,斷路器救欧,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 一、表單簡(jiǎn)介 GET所有表單輸入的數(shù)據(jù)被加載到請(qǐng)求的URL地址后面锣光;如:test.php?username=fre...
    XZ陽(yáng)光小熊閱讀 1,028評(píng)論 0 1
  • 最近發(fā)現(xiàn)一個(gè)現(xiàn)象,很多人都表示工作量太大铝耻,同時(shí)覺(jué)得任務(wù)太艱難誊爹。一開(kāi)始,我認(rèn)為是正確的瓢捉,但是后來(lái)認(rèn)真詢問(wèn)之...
    土豆泥rd閱讀 349評(píng)論 0 0