PHP文件的上傳與下載

今天給大家介紹的是PHP文件的上傳與下載,分為兩部分屁倔,第一部分:文件的上傳梁丘,第二部分:文件的下載燕偶;

一.文件的上傳

原理:將客戶端的文件上傳到服務(wù)器端喝噪,在將服務(wù)器端的臨時(shí)文件移動(dòng)到指定目錄即可。

客戶端:準(zhǔn)備一個(gè)表單頁(yè)面指么,表單的發(fā)送方式為post酝惧,并且添加enctype="multipart/form-data",記住:發(fā)送方式一定為post伯诬,并且form里面一定要添加enctype="multipart/form-data",兩者缺一不可晚唇。

以下為客戶端的簡(jiǎn)單實(shí)現(xiàn)代碼:

服務(wù)器:用PHP預(yù)定義變量$_FILES來(lái)接收傳過(guò)來(lái)文件,以下為客戶端接收頁(yè)面的截圖:

$_FILES變量解析,以下為截圖:

數(shù)組解析:myfile為表單提交頁(yè)面自定義的name盗似;name為上傳文件的名字哩陕;type為上傳文件的原始名稱;tmp_name為上傳文件的臨時(shí)保存文件的位置;error為上傳文件的錯(cuò)誤信息悍及;size為上傳文件的大忻銎啊;

服務(wù)端保存文件的兩種方式:

第一種:通過(guò)move_uploaded_file($tmp_name,$filename)函數(shù)實(shí)現(xiàn),以下為截圖:

第二種:通過(guò)copy()函數(shù)實(shí)現(xiàn)心赶,以下為截圖:

文件上傳常規(guī)配置解析扣讼,這些配置選項(xiàng)都在php.ini文件中,以下為截圖:

文件上傳的其他配置解析缨叫,以下為截圖:

上傳文件錯(cuò)誤信息說(shuō)明椭符,以下為截圖:

客戶端上傳文件限制,以下為截圖:

服務(wù)器端上傳文件限制(單文件上傳實(shí)例):以下為截圖:

二.文件的下載

文件的下載一種是可以通過(guò)表單的超鏈接方式實(shí)現(xiàn)耻姥,這個(gè)主要是實(shí)現(xiàn)瀏覽器不識(shí)別的文件類型销钝,例如:

對(duì)于一些瀏覽器識(shí)別的文件,比如圖片琐簇,視頻來(lái)說(shuō)就要通過(guò)PHP代碼來(lái)實(shí)現(xiàn)了蒸健,以下為實(shí)現(xiàn)過(guò)程:

上面的這種方式雖然實(shí)現(xiàn)了文件的下載,但是也是有他的缺陷性的鸽嫂,比如不能批量下載纵装,而且下載完之后瀏覽器的頁(yè)面會(huì)跳轉(zhuǎn),嚴(yán)重影響我們的業(yè)務(wù)据某,下面的這種方式就解決了這個(gè)問(wèn)題。

<?php

/**

*@params string $url 要下載的文件地址

*@params string $filePath 要保存的文件位置

*/

function downFile($url,$filePath){

? if($url=='' || $url==NULL){

? ? ? ? return "下載地址不能為空";

? }

? $ext_name = strrchr($url,'.');//獲取文件的擴(kuò)展名

? ob_start();//打開(kāi)輸出緩沖區(qū)诗箍,所有的輸出信息不在發(fā)送給瀏覽器癣籽,保存在緩沖區(qū)

? readfile($url);//將文件寫(xiě)入到緩沖區(qū)

? $file_data = ob_get_contents();//獲取緩沖區(qū)文件內(nèi)容,內(nèi)容為二進(jìn)制

? $filename = "./".$filePath.time().$ext_name;//構(gòu)建保存文件位置

? ob_end_clean();//清空緩沖區(qū)

? $local_file = fopen($filename,'a');//打開(kāi)文件

? $fwrite($local_file,$file_data);//將內(nèi)容寫(xiě)入文件

? fclose($local_file);//關(guān)閉文件

}

通過(guò)這個(gè)函數(shù)滤祖,我們就可以輕松實(shí)現(xiàn)文件的下載筷狼,而且我們可以循環(huán)調(diào)用來(lái)實(shí)現(xiàn)批量下載。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匠童,一起剝皮案震驚了整個(gè)濱河市埂材,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汤求,老刑警劉巖俏险,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扬绪,居然都是意外死亡竖独,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)挤牛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)莹痢,“玉大人,你說(shuō)我怎么就攤上這事【荷牛” “怎么了航瞭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)坦辟。 經(jīng)常有香客問(wèn)我沧奴,道長(zhǎng),這世上最難降的妖魔是什么长窄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任滔吠,我火速辦了婚禮,結(jié)果婚禮上挠日,老公的妹妹穿的比我還像新娘疮绷。我一直安慰自己,他們只是感情好嚣潜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布冬骚。 她就那樣靜靜地躺著,像睡著了一般懂算。 火紅的嫁衣襯著肌膚如雪只冻。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天计技,我揣著相機(jī)與錄音喜德,去河邊找鬼。 笑死垮媒,一個(gè)胖子當(dāng)著我的面吹牛舍悯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播睡雇,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼萌衬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了它抱?” 一聲冷哼從身側(cè)響起秕豫,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎观蓄,沒(méi)想到半個(gè)月后混移,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜘腌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年沫屡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撮珠。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沮脖,死狀恐怖金矛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勺届,我是刑警寧澤驶俊,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站免姿,受9級(jí)特大地震影響饼酿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胚膊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一故俐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紊婉,春花似錦药版、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至肢础,卻和暖如春还栓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背传轰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工剩盒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人路召。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓勃刨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親股淡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • 本文包括:1廷区、文件上傳概述2唯灵、利用 Commons-fileupload 組件實(shí)現(xiàn)文件上傳3、核心API——Dis...
    廖少少閱讀 12,528評(píng)論 5 91
  • 一隙轻、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評(píng)論 0 10
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,090評(píng)論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5埠帕? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,447評(píng)論 1 45
  • 上傳模塊配置樣例: # 上傳大小限制(包括所有內(nèi)容) client_max_body_size 100m; # 上...
    SkTj閱讀 13,059評(píng)論 0 3