????????最近在開發(fā)一款類似探探一樣的APP,然后我是用php寫的后臺(tái)接口,前端我用安卓。雖然APP的功能就一個(gè)匹配算法難一點(diǎn),其他的就安卓了,然后我現(xiàn)在想做一個(gè)社區(qū)發(fā)表博客的功能,然后,現(xiàn)在的問(wèn)題是如何上傳多張圖片和多個(gè)字段的內(nèi)容。一般多個(gè)字段為? 用戶名、地址、發(fā)表時(shí)間、心情,圖片呢,一張或多張。我安卓用的是MVP架構(gòu)模式,這個(gè)模式對(duì)大家都不是很陌生,好,先上代碼!
API.class


其實(shí)我完成這個(gè)功能之前,踩了很多坑,@Body不可用和@Multipart,公用,不然出現(xiàn)以下報(bào)錯(cuò)!

然后呢!還有一些小問(wèn)題,@Body? @PartMap()??@Part 等注解的用處,大家呢,就自己去百度,可以點(diǎn)擊官網(wǎng)看看
我要上傳的東西有很多,我先展示數(shù)據(jù)庫(kù)字段



observe表是用戶的關(guān)注者的中間表,piclist是博客圖片表,關(guān)聯(lián)著post表和user表,然后post表呢,要關(guān)聯(lián)user表,現(xiàn)在我展示我的PHP借口代碼:

我的接口字段有四個(gè)文字字段,一個(gè)文件字段,博客分為文字博客和圖片博客,我都做了判斷
然后現(xiàn)在是我怎么把圖片上傳到服務(wù)器,這個(gè)是一個(gè)問(wèn)題,ok,我們開始
API service類我已經(jīng)鞋好了,但是我沒(méi)有解釋原因:
@PartMap() Map?<String,RequestBody>partMap? 參數(shù):我用來(lái)存儲(chǔ)文字字段信息
@Part List<MultipartBody.Part>? file 參數(shù):存儲(chǔ)文件字段
如果你是上傳單一文件,你把list去掉
我的Model

RetrofitUtil.class

然后是Present:

View中的方法

我們剛開始要新建Map集合,來(lái)存儲(chǔ)文字信息,然后我自己封裝了一個(gè)方法,將文字轉(zhuǎn)為RequestBody,進(jìn)行傳輸,你們可能問(wèn),為什么不用在API里面寫@Part注解,String類型做參數(shù)呢!
原因是,我愛(ài)咋寫就咋寫,你管我
然后存儲(chǔ)圖片的集合List
List list =new ArrayList<>();
選取圖片以后是不是要獲取路徑,然后轉(zhuǎn)換為File類型,存儲(chǔ)在RequestBody里面,然后再轉(zhuǎn)為MultipartBody.Part,然后add到集合
然后new出Present對(duì)象,進(jìn)行接口調(diào)用,然后暴露View接口方法,獲取傳輸?shù)臄?shù)據(jù),然后判斷,很簡(jiǎn)單
ok,前面的坑我踩完了,你們可以放心走了!?。。?/p>
這個(gè)是APP截圖

記住我,我是大二架構(gòu)師?。。。?!
不懂的可以加我微信:x1789780841或者QQ:1789780841 歡迎打擾?。?/p>