摘要:下邊舉個(gè)例子,大家就明白了好了,請(qǐng)上我們的兩位同學(xué),小明和胖虎,你們就不用發(fā)言了,我會(huì)以的形式介紹你們的情況和個(gè)人癖好,請(qǐng)坐。
先介紹js的FormData,F(xiàn)ormData是XMLHttpRequest Level 2新增的一個(gè)接口,利用FormData對(duì)象,我們可以通過(guò)JavaScript用一些鍵值對(duì)來(lái)模擬一系列表單控件,我們還可以使用ajax方法來(lái)異步的提交這個(gè)"表單".使用FormData的最大優(yōu)點(diǎn)就是我們可以異步上傳一個(gè)二進(jìn)制文件.
這里說(shuō)下FormData的append方法,
void append(DOMString name, Blob value, optional DOMString filename); void append(DOMString name, DOMString value);參數(shù)值
字段名稱.
字段值.可以是,或者一個(gè)字符串,如果全都不是,則該值會(huì)被自動(dòng)轉(zhuǎn)換成字符串.
(可選) 指定文件的文件名,當(dāng)value參數(shù)被指定為一個(gè)Blob對(duì)象或者一個(gè)File?接口提供有關(guān)文件的信息,并允許網(wǎng)頁(yè)中的 JavaScript 訪問(wèn)其內(nèi)容。")對(duì)象時(shí),該文件名會(huì)被發(fā)送到服務(wù)器上,對(duì)于Blob對(duì)象來(lái)說(shuō),這個(gè)值默認(rèn)為"blob".
這里要注意下value字段,如果你要填入的是一個(gè)對(duì)象,會(huì)將它轉(zhuǎn)換成字符串,也就是最后傳給后臺(tái)的都是[object object],這樣后臺(tái)當(dāng)然是無(wú)法解析的。下邊舉個(gè)例子,大家就明白了
好了,請(qǐng)上我們的兩位同學(xué),小明和胖虎,你們就不用發(fā)言了,我會(huì)以json的形式介紹你們的情況和個(gè)人癖好,請(qǐng)坐。
var json=[ {"name":"小明","age":15,"skills":["抽煙","喝酒","燙頭"],"family":{"father":"大明","mohter":"小紅"}}, {"name":"胖虎","age":17,"skills":["打架","打架","還是打架"],"family":{"father":"佐藤","mohter":"愛田"}}, ]
首先我們先試一下,把小明的family對(duì)象傳給后臺(tái)。
var data=new FormData() data.append("family",json[0].family) $.ajax({ url:"demo.php", type: "Post", dataType: "json", cache: false,//上傳文件無(wú)需緩存 processData: false,//用于對(duì)data參數(shù)進(jìn)行序列化處理 這里必須false contentType: false, //必須 data:data, success:function (res) { console.log(res); }, error:function (error) { console.log(error); } })
結(jié)果:
被解析成了object object,有人該說(shuō)了,你把它用JSON.stringify序列化之后不就行了,然后后端配合,再解碼成json,對(duì),這樣確實(shí)行,但不要忘了,咱們還是需要傳文件流的,文件流被序列化之后會(huì)被轉(zhuǎn)化成一個(gè)空對(duì)象,這樣后臺(tái)就無(wú)法識(shí)別。由于時(shí)間原因,這里就不演示反面案例了。
這里我們要用兩個(gè)語(yǔ)法
1.a["b"]等于a.b
2.c[0]取得是c數(shù)組的第一項(xiàng)
正確方法:
var data=new FormData() for(var i=0,len=json.length;i之后,我們?cè)俳o小明和胖虎每人上傳一張個(gè)人寫真照(利用input
file,文件流)
這里我們利用input上傳時(shí)的file對(duì)象,
附上代碼:$("#upload").on("change",function (e) { var file = e.target.files[0]; console.log(file); data.append("json[0][image]",file) })這個(gè)file對(duì)象是一個(gè)含有二進(jìn)制文件,打印為:
這個(gè)對(duì)象如果直接序列化,會(huì)被轉(zhuǎn)化為一個(gè)空對(duì)象,后臺(tái)無(wú)法識(shí)別,最后附上vue版代碼:upload:function (e) { var file = e.target.files[0]; //由于時(shí)間和條件原因,這里只給小明上傳一張寫真照 data.append("json[0][image]",file) for(var i=0,len=json.length;i
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105061.html
摘要:背景介紹使用將包括安卓和上傳到七牛上傳所以不考慮數(shù)據(jù)處理使用后臺(tái)得到七牛上傳基于下面不詳述如何使用參見七牛上傳的簡(jiǎn)單案例也不詳述,參見官網(wǎng)事例很清楚了。指定上傳的目標(biāo)資源空間和資源鍵的長(zhǎng)度最大為字節(jié)。,表示只允許用戶上傳指定的文件。 背景介紹 使用JS將APP(包括安卓和IOS)上傳到七牛 (上傳APP所以不考慮數(shù)據(jù)處理) uptoken使用JAVA后臺(tái)得到 七牛上傳基于pluplo...
摘要:當(dāng)用戶完成選擇文件動(dòng)作時(shí),提交子頁(yè)面中的。從此我們上傳文件就歡欣鼓舞的來(lái)找了。因?yàn)榈暮诵氖菍?duì)象,異步的實(shí)現(xiàn)是通過(guò)一個(gè)對(duì)象,一般簡(jiǎn)稱該對(duì)象對(duì)。這些回答基于自己理解,如有不妥,希望路過(guò)的大神輕噴,指正。 背景 平時(shí)工作中經(jīng)常會(huì)遇到需要上傳文件的情況,如果你用ant design 或者element ,它們都提供了上傳的組件。 我們分別來(lái)看一下element 和 antd 手動(dòng)上傳怎么處理:...
摘要:網(wǎng)址功能單圖多圖上傳圖片上傳預(yù)覽上傳進(jìn)度條分組上傳,分組查詢新建分組,刪除分組刪除圖片選擇圖片目錄結(jié)構(gòu)前端利用搭建,中引入子組件。實(shí)現(xiàn)分組的新增查詢刪除。利用模塊實(shí)現(xiàn)刪除文件功能。 公司要寫一些為自身業(yè)務(wù)量身定制的的組件,要基于Vue,寫完后擴(kuò)展了一下功能,選擇寫圖片上傳是因?yàn)樽约褐耙恢睂?duì)這個(gè)功能比較迷糊,所以這次好好了解了一下。演示在網(wǎng)址打開后的show.gif中。 使用技術(shù):Vu...
摘要:,至此咱們的微信小程序的簡(jiǎn)單使用及了解算是分享完了,畢竟個(gè)人也是道行有限,沒(méi)有鉆研太深,這些只是本人在實(shí)際項(xiàng)目開發(fā)過(guò)程中用到和總結(jié)的經(jīng)驗(yàn),有太多不足或不對(duì)的地方,希望大家多多給予指出與改正,咱們一起來(lái)共同學(xué)習(xí)與進(jìn)步 微信小程序是一種不需要下載安裝即可使用的應(yīng)用,在國(guó)內(nèi)它在企業(yè)推廣中的受歡迎度以及就這兩年的使用及普及熱度,然而就是因?yàn)樗膫涫軞g迎度以及越來(lái)越被企業(yè)所重視,也就形成了咱們開...
閱讀 3128·2021-11-22 13:54
閱讀 863·2021-11-04 16:08
閱讀 4683·2021-10-11 11:09
閱讀 3636·2021-09-22 16:05
閱讀 997·2019-08-30 15:54
閱讀 422·2019-08-30 15:44
閱讀 627·2019-08-30 14:05
閱讀 1045·2019-08-30 12:46