關(guān)于文件上傳(原理)

對于客戶端

文件的上傳其實也是post方式進(jìn)行提交的,可以理解為跟表單提交大體一致佑力,但:

1式散、普通表單采用的是默認(rèn)MIME編碼。默認(rèn)值為:application/x-www-form-urlencoded(在發(fā)送前編碼所有字符)打颤;
2暴拄、文件上傳的表單采用的MIME編碼方式必須指定為:multipart/form-data(不對字符編碼。在使用包含文件上傳控件的表單時编饺,必須使用該值乖篷。);
3透且、在HTML表單里通過設(shè)置:encType來指定MIME編碼撕蔼;比如:encType="multipart/form-data",在其他客戶端采用Content-Type來指定秽誊;比如:Content-Type="multipart/form-data"

說明:一個HTTP請求其實發(fā)送了2大部分內(nèi)容鲸沮,大家常見的就是Request Payload,但是另一個大家不常操作的是Requst Header锅论,簡單來說就是:header+body的方式讼溺。上面的MIME編碼等指定方式就是在header里。當(dāng)然最易,HTML那個encType就是Content-Type怒坯,只是他換了個名字而已炫狱。當(dāng)然,Content-Type何止這2種剔猿。毕荐。。太多了艳馒,詳見

4憎亚、文件上傳還需要一個boundary。
說明:這個是用來干嘛的弄慰?先說位置第美,它是放在Content-Type里。例子:Content-Type="multipart/form-data;boundary=ed67c97e-2000-47de-9033-77aeb8df43d9"(瀏覽器每次都會自動生成一個不同的boundary)陆爽。我們再來看看這玩意兒是用來干嘛的:它標(biāo)志著一段數(shù)據(jù)(當(dāng)有多個上傳內(nèi)容時)的開始和結(jié)束什往。看完了這句話我估計你跟我一樣----毛意思慌闭?别威??驴剔?
a)這一串字符其實就是隨機(jī)生成的省古,它是一個分隔符,一定要確保你需要上傳的文件中沒有完全包含這個分隔符丧失,一般來說豺妓,隨便一個含幾個字符的字符串都是沒有問題的。
b)這個分割符到底是用來分割啥的布讹?它用來分割你表單里各個表單元素琳拭。比如你的表單里有<input type='text' name='username' value="parcool">
<input type='file' name='filename' value="filedata">
就是用來分割這個的。

當(dāng)然描验,Header也不止這點兒東西啊白嘁,還有一些其他的,詳見(維基百科的膘流,不知道你能否打開)


這樣絮缅,你就能愉快的上傳咯,在做安卓或iOS的時候睡扬,很多框架已有類似于瀏覽器的功能會自動加上boundary盟蚣。當(dāng)然,我這里沒有詳細(xì)示例,也沒有最底層的HTTP協(xié)議講解翘悉,只是圖方便理解而已啤挎。


關(guān)于服務(wù)端

寫博文好累的,有空了再寫這邊的吧卷拘,不過意思跟客戶端的幾乎一致氢橙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叫搁,一起剝皮案震驚了整個濱河市甩鳄,隨后出現(xiàn)的幾起案子逞度,更是在濱河造成了極大的恐慌,老刑警劉巖妙啃,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档泽,死亡現(xiàn)場離奇詭異,居然都是意外死亡揖赴,警方通過查閱死者的電腦和手機(jī)馆匿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來燥滑,“玉大人渐北,你說我怎么就攤上這事∶。” “怎么了赃蛛?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長搀菩。 經(jīng)常有香客問我呕臂,道長,這世上最難降的妖魔是什么肪跋? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任诵闭,我火速辦了婚禮,結(jié)果婚禮上澎嚣,老公的妹妹穿的比我還像新娘疏尿。我一直安慰自己,他們只是感情好易桃,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布褥琐。 她就那樣靜靜地躺著,像睡著了一般晤郑。 火紅的嫁衣襯著肌膚如雪敌呈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天造寝,我揣著相機(jī)與錄音磕洪,去河邊找鬼。 笑死诫龙,一個胖子當(dāng)著我的面吹牛析显,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播签赃,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谷异,長吁一口氣:“原來是場噩夢啊……” “哼分尸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起歹嘹,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤箩绍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尺上,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體材蛛,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年怎抛,在試婚紗的時候發(fā)現(xiàn)自己被綠了仰税。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡抽诉,死狀恐怖陨簇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迹淌,我是刑警寧澤河绽,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站唉窃,受9級特大地震影響耙饰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纹份,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一苟跪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔓涧,春花似錦件已、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茉盏,卻和暖如春鉴未,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸠姨。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工铜秆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讶迁。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓连茧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梅屉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

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