vue&axios通過FormData上傳文件

1.需求

? ? ? ? vue項(xiàng)目中拌屏,通過axios或者二次封裝的axios上傳文件(圖片被廓,文檔蛛枚,工作表等)谅海。后臺接收FormData類型的數(shù)據(jù)。現(xiàn)在的項(xiàng)目一般來說后臺接收數(shù)據(jù)為JSON字符串蹦浦,接收文件為FormData表單扭吁。

2.分析

? ? ? ? 一般來說,項(xiàng)目都會對axios進(jìn)行二次封裝盲镶。直接使用axios侥袜,或者自己二次封裝axios的情況,應(yīng)該對請求的各種配置比較清楚了溉贿。對axios和網(wǎng)絡(luò)協(xié)議理解不充分并?直接使用其他人二次封裝的axios 時(shí)多會對此有疑問枫吧,或者在上傳文件時(shí)遇到障礙。因?yàn)槎畏庋b的axios中的一些前置配置影響到了表單形式的提交宇色。

3.解決方案

? ? ? ? 先說下以表單形式發(fā)送的一些前置設(shè)置九杂。
? ? ? ? 一般我們首先需要一個(gè)表單標(biāo)簽,和input標(biāo)簽宣蠕。這個(gè)表單標(biāo)簽的主要作用呢就是生成FormData類型的數(shù)據(jù)例隆。一般我們有自己的上傳文件按鈕和預(yù)覽文件盒子,所以我把原始input[type='file']隱藏了抢蚀。注意:表單提交形式需要寫好對應(yīng)的name镀层,作為后臺讀數(shù)據(jù)時(shí)鍵值對的鍵。

圖1.標(biāo)簽設(shè)置

? ? ? ? js內(nèi)把數(shù)據(jù)存為表單形式思币,將表單的Dom作為參數(shù)傳入new FormData()中即可獲得表單類型的數(shù)據(jù)鹿响。我們直接把這個(gè)FormData型的數(shù)據(jù)傳遞給后臺即可。注意:FormData不能做JSON字符串轉(zhuǎn)換谷饿。下圖中的config是指請求頭headers的設(shè)置惶我。

圖2.取數(shù)據(jù)

? ? ? ? 按理來說FormData數(shù)據(jù)正確,headers設(shè)置'Content-Type':'multipart/form-data'就可以正確傳遞了博投。這是最表面的設(shè)置也是最基本的設(shè)置绸贡,但是有些同志設(shè)置后還是不好用。那么我就要再強(qiáng)調(diào)一次,需要寫好對應(yīng)的name听怕,F(xiàn)ormData不能做JSON字符串轉(zhuǎn)換.? 寫好name這個(gè)大家因該都理解捧挺,也是比較低級的錯(cuò)誤。那我為什么要強(qiáng)調(diào)不能做字符串轉(zhuǎn)換呢尿瞭。一個(gè)原因是在后臺在接收其他數(shù)據(jù)多為JSON字符串闽烙,另一個(gè)原因就是二次封裝的axios可能包含了前置操作(字符串轉(zhuǎn)換)

圖3.前置操作

????????如圖3声搁,紅框內(nèi)就是對傳遞的參數(shù)做前置操作(JSON字符串轉(zhuǎn)換)黑竞。使用二次封裝的axios時(shí)一定要查看是否有如上的代碼,被這里代碼做JSON字符串轉(zhuǎn)換后疏旨,就會導(dǎo)致FormData無法正常提交很魂。
? ? ? ? 解決方案:1.不使用二次封裝的axios,直接使用原型axios檐涝。
? ? ? ? ? ? ? ? ? ? ? ? ? 2.修改二次封裝的axios遏匆,添加提交表單類型的情況處理。
ps.我二次封裝過一個(gè)axios谁榜,包含了傳遞JSON幅聘,F(xiàn)ormData,以及接收Blob的情況窃植。
? ? 詳情可以閱讀我的相關(guān)文章 axios二次封裝
? ? ----(之后我又做了promise化的處理喊暖,更加方便了,寫這篇文章時(shí)尚未添加撕瞧。)
????或者查看我gitee上的源碼 axios.js

轉(zhuǎn)載到其他平臺需含本文的簡書鏈接

前端豆知識,很小卻有用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狞尔,一起剝皮案震驚了整個(gè)濱河市丛版,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偏序,老刑警劉巖页畦,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異研儒,居然都是意外死亡豫缨,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門端朵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來好芭,“玉大人,你說我怎么就攤上這事冲呢∩岚埽” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長邻薯。 經(jīng)常有香客問我裙戏,道長,這世上最難降的妖魔是什么厕诡? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任累榜,我火速辦了婚禮,結(jié)果婚禮上灵嫌,老公的妹妹穿的比我還像新娘壹罚。我一直安慰自己,他們只是感情好醒第,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布渔嚷。 她就那樣靜靜地躺著,像睡著了一般稠曼。 火紅的嫁衣襯著肌膚如雪形病。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天霞幅,我揣著相機(jī)與錄音漠吻,去河邊找鬼。 笑死司恳,一個(gè)胖子當(dāng)著我的面吹牛途乃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扔傅,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耍共,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猎塞?” 一聲冷哼從身側(cè)響起试读,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荠耽,沒想到半個(gè)月后钩骇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铝量,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年倘屹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慢叨。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纽匙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出插爹,到底是詐尸還是另有隱情哄辣,我是刑警寧澤请梢,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站力穗,受9級特大地震影響毅弧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜当窗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一够坐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧崖面,春花似錦元咙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至简识,卻和暖如春赶掖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背七扰。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工奢赂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颈走。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓膳灶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親立由。 傳聞我的和親對象是個(gè)殘疾皇子轧钓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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

  • FormData學(xué)習(xí)筆記 FormData對象: >通過FormData對象可以組裝一組用 XMLHtt...
    johe_jianshu閱讀 33,326評論 3 14
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫聋迎、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,094評論 4 62
  • ?? 在這個(gè)功利的世界庭再,充滿無限欲望的我們捞奕,應(yīng)該沒有誰不想成為高手,唱歌演電影最好成為明星拄轻,女的成為孫儷颅围,男的就成...
    合眼看世界閱讀 666評論 2 3
  • 在這暴風(fēng)雨的夜晚你還在外面作愛的旅行嗎,我的朋友恨搓?天空像失望者在哀號院促。 我今夜無眠筏养。我不斷地開門向黑暗中瞭望,我的...
    朱忠國閱讀 629評論 0 1
  • 小幸運(yùn)認(rèn)真呼喚白馬 屬于孩子氣 的兵荒馬亂 某分某秒 終于在伊甸園 開出漫天“我愛你” 來日 確認(rèn)過你出席 方可以...
    朵鹿閱讀 157評論 0 1