Retrofit2.0+ .Net MVC4(WebApi) 上传多张图片
最近在做Android項目,使用的是MVP+Retrofit+rxjava+dagger的項目架構,RestFul 服務使用的.Net平臺的WebApi。由于業務中需要有多文件上傳的功能。所以在這里記載一下,便于以后查閱。
Android端Retrofit api 定義
?在這次上傳中,我們將實體類數據和文件數據一起上傳到服務端。所以只寫一個api就好
讀取文件并將其轉換成MuiltipartBody.Part 列表
調用Retrofit 進行網絡請求,并將實體類數據和文件數據一并發送到 服務端
在webapi 端對文件以及數據進行接收。由上面轉化MultipartBody?? 那一個環節我們可以看到,傳到服務端的數據是以HTTP形式傳送的。數據類型都是multipart/form-data類型的。所以我們在服務端要使用http相關協議來進行接收。
?
???????????????[HttpPost]public?HttpResult<string>?AddEvent(){//獲取EventET?的屬性HttpRequest?request?=?HttpContext.Current.Request;string?entity?=?request.Form[0];BaseBN?baseBN?=?new?BaseBN();EventET?et?=?baseBN.CTJsonSerializer<EventET>(entity);SystemBN?bn?=?new?SystemBN();et.EVENT_ID?=?bn.CreateID("EVENT",?HaiQu.N,?"EVENT_ID",?"EVENT",?EventType.YiYou);List<string>?addr?=?new?List<string>();//獲取上傳的文件HttpFileCollection?coll?=?request.Files;for?(int?i?=?0;?i?<?coll.Count;?i++){HttpPostedFile?file?=?coll.Get(i);String?filename?=?file.FileName.Substring(file.FileName.LastIndexOf("\\")?+?1);if?(!Directory.Exists(System.Web.HttpContext.Current.Server.MapPath("~/Upload/"?+?et.EVENT_ID)))//如果不存在就創建file文件夾{Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath("~/Upload/"?+?et.EVENT_ID));}string?fileSavePath?=?string.Format("~/Upload/"?+?et.EVENT_ID?+?"/{0}",?filename);file.SaveAs(System.Web.HttpContext.Current.Server.MapPath(fileSavePath));addr.Add(fileSavePath);}EventBN?eventBN?=?new?EventBN();HttpResult<string>?result?=?eventBN.AddEvent(et,?addr,?HaiQu.N);return?result;}這里有幾點需要注意,實體類的數據,傳輸到服務端的時候,會以JSON字符串的形式傳輸到后臺。這樣的話,在后臺使用的時候,需要對其進行反序列化。
另外,上傳的文件,在HTTP中是以集合的形式存在,直接取出來,存儲到本地就好。有一點需要注意的是,由于IIS對上傳文件的限制,需要提前修改一下允許上傳文件的上限。要不然,會上傳不成功(這些都是已經踩過的坑)。
說在最后,其實上傳文件很簡單,網上有很多的大神已經講解的非常詳細。之所又自己啰嗦了一下,是因為,在做的過程中,踩了很多的坑,而且網上大多數人都只寫了Android端,沒有寫服務端。再加上,.NET WebApi 用的人比較小眾,所以就記錄了一下。以后有時間會補上Spring 作為服務端的寫法。以及Struts作為服務端的寫法。
今天就到這里吧。
轉載于:https://blog.51cto.com/xiaoshuaigege/1878634
總結
以上是生活随笔為你收集整理的Retrofit2.0+ .Net MVC4(WebApi) 上传多张图片的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: phpmyadmin 解压首次无法登陆问
- 下一篇: CSS中块级格式化上下文(BFC)的特性