摘要:在最后也要添加一個(gè)分界,不一樣的是在分界的前后各加了兩個(gè)表示數(shù)據(jù)發(fā)送完畢。至此上傳篇結(jié)束了
這里要說(shuō)一下,本篇我重點(diǎn)說(shuō)的是上傳,至于下載,查看對(duì)應(yīng)的下載篇
在原來(lái),文件的上傳是使用form表單去提交,有的時(shí)候?yàn)榱松蟼魑募?,還要專門(mén)為上傳文件寫(xiě)一個(gè)form表單上傳文件,十分的麻煩,探索宇宙已經(jīng)很累了,哪有時(shí)間浪費(fèi)?。。_^
正式進(jìn)入主題
先看看怎么從html頁(yè)面中發(fā)送文件,回答是:使用 FormData
FormData使用h5新添加的一個(gè)對(duì)象,可以用來(lái)包裝要發(fā)送的數(shù)據(jù),一個(gè)例子
如上所述,你就已經(jīng)發(fā)送了
{ username:123456, password:67890, picture:文件數(shù)據(jù)(其實(shí)這里是將文件轉(zhuǎn)換為二進(jìn)制了) }
我們可以看見(jiàn)使用FormData添加數(shù)據(jù)非常的簡(jiǎn)單,特別是解決了在上傳文件只能使用form表單的憋屈。
下面我要說(shuō)說(shuō),使用FormData包裝好的數(shù)據(jù)怎么傳輸?shù)模蚁脒@是非常有必要的,特別是當(dāng)你在后端解析數(shù)據(jù)的時(shí)候,必須要知道傳給后臺(tái)的數(shù)據(jù)長(zhǎng)什么樣
使用FormData后,會(huì)將request的Content-Type設(shè)置為
“multipart/form-data;boundary=----"+一段隨機(jī)的字母;
上面的boundary正如字面的意思一樣,就是一個(gè)分界的意思,分開(kāi)每一個(gè)鍵值對(duì)數(shù)據(jù),具體的數(shù)據(jù)格式為
--boundary(換行) Content-Disposition:form-data;name=“數(shù)據(jù)的鍵”(換行) (換行) 數(shù)據(jù)的值(“換行”)
注意每一個(gè)boundary的前面要加兩個(gè)“-”
對(duì)于文件的數(shù)據(jù)格式為:
—boundary(換行) Content-Disposition:form-data;name=“數(shù)據(jù)的鍵”;filename=“文件名”(換行) Content-Type:*/*(換行) 文件的二進(jìn)制編碼
用我們前面的例子,發(fā)送的數(shù)據(jù)為:
--boundary Content-Disposition:form-data;name="username" 123456 --boundary Content-Disposition:form-data;name="password" 67890 --boundary Content-Disposition:form-data;name="picture";filename="上傳的文件名" Content-Type:image/jpeg; 對(duì)圖片進(jìn)行二進(jìn)制編碼后的數(shù)據(jù) --boundary--
上面的boundary是一個(gè)變量,可以是一串隨機(jī)數(shù),不過(guò)FormData默認(rèn)是四個(gè)"-"加一串隨機(jī)數(shù)。
在最后也要添加一個(gè)分界,不一樣的是在分界的前后各加了兩個(gè)"-",表示數(shù)據(jù)發(fā)送完畢。
至此上傳篇結(jié)束了
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/50154.html
摘要:本文主要在后端接收前端給的數(shù)據(jù),前端的上傳篇,查看對(duì)應(yīng)的上傳篇如果你想馬上使用,那么你可以去中使用或者可以快速的解決你的問(wèn)題,這里不使用包,完成下載的功能首先需要知道傳過(guò)來(lái)的數(shù)據(jù)長(zhǎng)什么樣子,這個(gè)非常重要如果這里有疑問(wèn),你可以查看對(duì)應(yīng)的上傳篇 本文主要在后端接收前端給的FormData數(shù)據(jù),前端的上傳篇,查看對(duì)應(yīng)的上傳篇 如果你想馬上使用,那么你可以去npm中使用multer或者form...
摘要:格式支持比鍵值對(duì)復(fù)雜得多的結(jié)構(gòu)化數(shù)據(jù),這一點(diǎn)也很有用。例如下面這段代碼最終發(fā)送的請(qǐng)求是這種方案,可以方便的提交復(fù)雜的結(jié)構(gòu)化數(shù)據(jù),特別適合的接口。 簡(jiǎn)介 form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認(rèn)為application/x-www-form-urlencoded。 ...
摘要:在表單提交時(shí),瀏覽器會(huì)自動(dòng)進(jìn)行一系列的校驗(yàn)工作,沒(méi)有通過(guò)校驗(yàn)的表單是無(wú)法提交到服務(wù)器的。而方法提交表單,會(huì)在請(qǐng)求中發(fā)送表單字段鍵值對(duì)。表單提交事件表單提交到服務(wù)器時(shí),會(huì)觸發(fā)事件。 上一篇主要溫習(xí)了一下form表單的屬性和表單元素,這一片主要講解用JavaScript如何操作form。 表單操作 取值 用JavaScript操作表單,免不了會(huì)有取值賦值操作,比如有以下表單: ...
摘要:表單用于向服務(wù)器傳輸數(shù)據(jù)。屬性對(duì)象的屬性指定了一個(gè)事件句柄函數(shù)。標(biāo)簽的屬性應(yīng)當(dāng)與相關(guān)元素的屬性相同。詳情查閱請(qǐng)狠狠地點(diǎn)擊關(guān)于對(duì)象代表表單中的一個(gè)提交按鈕在表單提交之前,觸發(fā)事件句柄,并且一個(gè)句柄可以通過(guò)返回來(lái)取消表單提交。 系列文章 關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(零)關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(一) ----- XMLHttpRequest關(guān)于前端上傳文件全面基礎(chǔ)掃盲貼(二) -...
閱讀 1323·2021-09-22 15:00
閱讀 3316·2019-08-30 14:00
閱讀 1233·2019-08-29 17:27
閱讀 1228·2019-08-29 16:35
閱讀 702·2019-08-29 16:14
閱讀 2048·2019-08-26 13:43
閱讀 2129·2019-08-26 11:35
閱讀 2314·2019-08-23 15:34