PHP文件上傳及其突破上傳文件大小限制

index

PHP文件上傳及其突破上傳文件大小限制 __veblen

文件上傳在實際開發(fā)場景里較為常見舵匾,例如:上傳頭像、上傳相冊荐操、百度云盤等等诅妹!接下來罚勾,一塊了解一下PHP如何處理前端文件上傳。

1. 創(chuàng)建一個文件上傳表單

<html>
<head>
<meta charset="utf-8">
<title>清風筆記</title>
</head>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    <label for="file">頭像:</label>
    <input type="file" name="file" id="file"><br>
    <input type="submit" name="submit" value="上傳">
</form>

</body>
</html>

  • <form> 標簽的 enctype 屬性規(guī)定了在提交表單時要使用哪種內(nèi)容類型吭狡。在表單需要二進制數(shù)據(jù)時尖殃,比如文件內(nèi)容,請使用 multipart/form-data划煮。

  • <input> 標簽的 type="file" 屬性規(guī)定了應該把輸入作為文件來處理送丰。舉例來說,當在瀏覽器中預覽時弛秋,會看到輸入框旁邊有一個瀏覽按鈕器躏。

通過使用 PHP 的全局數(shù)組 $_FILES俐载,你可以從客戶計算機向遠程服務器上傳文件。 第一個參數(shù)是表單的input name登失,第二個下標可以是 "name"遏佣、"type""size"壁畸、"tmp_name""error"。如下所示:

  • $_FILES["file"]["name"] - 上傳文件的名稱
  • $_FILES["file"]["type"] - 上傳文件的類型
  • $_FILES["file"]["size"] - 上傳文件的大小茅茂,以字節(jié)計
  • $_FILES["file"]["tmp_name"] - 存儲在服務器的文件的臨時副本的名稱
  • $_FILES["file"]["error"] - 由文件上傳導致的錯誤代碼

上傳限制

有時我們需要對用戶上傳的文件類型進行限制捏萍,代碼如下:

<?php
    //png且體積小于200kb
    if( $_FILES["file"]["type"] == "image/png" &&  $_FILES["file"]["size"] < 204800){
        if($_FILES["file"]["error"] > 0){
            echo "錯誤: ".$_FILES["file"]["error"]."<br>";
        }else{
            echo "上傳文件名: ".$_FILES["file"]["name"]."<br>";
            echo "文件類型: ".$_FILES["file"]["type"]."<br>";
            echo "文件大小: ".($_FILES["file"]["size"] / 1024)." kB<br>";
            echo "文件臨時存儲的位置: ".$_FILES["file"]["tmp_name"];
        }
    }else{
        echo "非法的文件格式";
    }
?>

保存被上傳的文件

上面的實例在服務器的 PHP 臨時文件夾中創(chuàng)建了一個被上傳文件的臨時副本。 這個臨時的副本文件會在腳本結(jié)束時消失空闲。要保存被上傳的文件令杈,我們需要把它拷貝到另外的位置:

核心代碼:

// 判斷當期目錄下的 upload 目錄是否存在該文件
if(file_exists("upload/".$_FILES["file"]["name"])){
     echo $_FILES["file"]["name"]." 文件已經(jīng)存在。 ";
}else{
     // 如果 upload 目錄不存在該文件則將文件上傳到 upload 目錄下
     move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$_FILES["file"]["name"]);
     echo "文件存儲在: "."upload/".$_FILES["file"]["name"];
}

解除PHP對文件大小限制:

php.ini中的參數(shù):


file_uploads  //是否允許上傳文件碴倾,默認ON 

upload_tmp_dir //上傳文件防止的臨時目錄逗噩,未指定則使用系統(tǒng)默認位置 

upload_max_filesize //允許上傳文件的大小的最大值,默認為2M 

post_max_size //控制采用POST方法進行一次表單提交中PHP所能接受的最大數(shù)據(jù)量跌榔,如果希望用PHP文件上傳异雁,則此值要改為比upload_max_filesize要大 

max_input_time //以秒為單位對通過POST/GET/PUT方式接受數(shù)據(jù)時間進行限制。 

memory_limit //為了避免正在運行的腳本大量使用系統(tǒng)內(nèi)存僧须,PHP允許定義內(nèi)存使用限額纲刀。通過設(shè)置此參數(shù)來制定單個腳本程序可以使用的最大內(nèi)存容量,應適當大于post_max_size值 

max_execution_time //用來設(shè)置在強制終止腳本前PHP等待腳本執(zhí)行完畢的時間担平,單位秒示绊。次選項可限制死循環(huán)腳本,但當存在一個長時間的合法活動時(如:上傳大文件)暂论,這項功能也會導致操作失敗面褐。這樣情況下必須考慮將此變量增加。

至此取胎,PHP文件上傳已經(jīng)介紹完畢展哭,熟悉整套操作流程,方法不是問題闻蛀,加油摄杂!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市循榆,隨后出現(xiàn)的幾起案子析恢,更是在濱河造成了極大的恐慌,老刑警劉巖秧饮,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件映挂,死亡現(xiàn)場離奇詭異泽篮,居然都是意外死亡,警方通過查閱死者的電腦和手機柑船,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門帽撑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鞍时,你說我怎么就攤上這事亏拉。” “怎么了逆巍?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵及塘,是天一觀的道長。 經(jīng)常有香客問我锐极,道長笙僚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任灵再,我火速辦了婚禮肋层,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翎迁。我一直安慰自己栋猖,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布汪榔。 她就那樣靜靜地躺著掂铐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揍异。 梳的紋絲不亂的頭發(fā)上全陨,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音衷掷,去河邊找鬼辱姨。 笑死,一個胖子當著我的面吹牛戚嗅,可吹牛的內(nèi)容都是我干的雨涛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼懦胞,長吁一口氣:“原來是場噩夢啊……” “哼替久!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起躏尉,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蚯根,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胀糜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颅拦,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡蒂誉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了距帅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片右锨。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖碌秸,靈堂內(nèi)的尸體忽然破棺而出绍移,到底是詐尸還是另有隱情,我是刑警寧澤讥电,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布蹂窖,位于F島的核電站,受9級特大地震影響允趟,放射性物質(zhì)發(fā)生泄漏恼策。R本人自食惡果不足惜鸦致,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一潮剪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧分唾,春花似錦抗碰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至折砸,卻和暖如春看疗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背睦授。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工两芳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人去枷。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓怖辆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親删顶。 傳聞我的和親對象是個殘疾皇子竖螃,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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

  • 文件上傳在實際開發(fā)場景里較為常見,例如:上傳頭像逗余、上傳相冊特咆、百度云盤等等!接下來录粱,一塊了解一下PHP如何處理前端文...
    Veb閱讀 2,646評論 3 14
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理坚弱,服務發(fā)現(xiàn)蜀备,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 最近假期可能太咸了 閑到要變成咸魚 一方面因為年齡原因 不由得開始著急 著急自己的人生進程好像太慢了 總是忍不住看...
    直角坐標系閱讀 204評論 0 0
  • 本文參與#漫步青春#征文活動 作者:朱敏荒叶,本人承諾碾阁,文章內(nèi)容為原創(chuàng),且未在其他平臺發(fā)布 慢慢踱步些楣, 在如今的繁華喧...
    啊daogei閱讀 95評論 0 0
  • 聽的報告或講座應該有數(shù)百場了脂凶,有些報告聽了不知所云或全是陳詞濫調(diào),浪費時間愁茁,一個好的報告應該是什么樣的呢蚕钦? 個人認...
    容玲閱讀 672評論 2 1