Swift中文件和圖片上傳處理

前言:基于Alamofire4.5網絡框架開發的Swift項目中上傳文件和圖片代碼參考。

上傳文件

extension HttpRequestService {typealias UploadDoneBlock = (_ dict:[String : Any]) -> Void//成功blockfunc uploadEcgFileWithGatherRecord(model :RecordModel, fileName : String, zipData : NSData, md5 : String, success:@escaping UploadDoneBlock, fail:@escaping FailedBlock) {let urlStr = HttpConfig.RequestUrlHeader.httpRequestUrlHeader + HttpConfig.RequestApi.uploadRecordApi//構造發送參數let parameters: Parameters = ["user_id":model.userId]//請求頭let localToken = Tools.readFromUserDefault(key: localToken)!// 頭部需要的內容包裝let headers: HTTPHeaders = [ "Accept": "application/json;charset=utf-8","lang":"en-US","token": localToken]Alamofire.upload(multipartFormData: { (formData) in// "fname" 這里是服務器對應好的字段formData.append(zipData as Data, withName: "fname", fileName: fileName, mimeType:"application/zip")//拼接參數for (key, value) in parameters {let v = value as! StringformData.append(v.data(using: String.Encoding.utf8)!, withName: key)}
// usingThreshold 指的是傳入文件大小最大值}, usingThreshold: (50*1024*1024), to: URL.init(string: urlStr)!, method: HTTPMethod.post, headers: headers) { (encodingResult) inswitch encodingResult {case .success(let upload, _, _):upload.responseJSON { response inif let jsonValue = response.result.value {let json = JSON(jsonValue)print("上傳記錄json:\(json)")let code = json["code"].intif code == HttpConfig.ErrorCode.HttpOK {let dict = json["data"].dictionaryObjectsuccess(dict!) } else {fail("")}}}case .failure(_):self.networkErrorHint()  // 網絡錯誤處理 }}}
復制代碼

圖片上傳

typealias UploadUserIconSuccess = (_ dict:[String : Any]) -> Void//成功blockfunc uploadUserIcon(fileName: String, imgData: NSData, success:@escaping UploadUserIconSuccess, fail:@escaping FailedBlock ) {let urlStr = HttpConfig.RequestUrlHeader.httpRequestUrlHeader + HttpConfig.RequestApi.uploadUserIconApi//請求頭let localToken = Tools.readFromUserDefault(key: localToken)!// 頭部需要的內容包裝let headers: HTTPHeaders = [ "Accept": "application/json;charset=utf-8","lang":"en-US","token": localToken]Alamofire.upload(multipartFormData: { (formData) in// 參數解釋://withName:和后臺服務器的name要一致 ;fileName:可以充分利用寫成用戶的id,但是格式要寫對; mimeType:規定的,要上傳其他格式可以自行百度查一下formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")//如果需要上傳多個文件,就多添加幾個append,或則for-in語句進行循環處理
// formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")
//  formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")}, usingThreshold: (10*1024*1024), to: URL.init(string: urlStr)!, method: HTTPMethod.post, headers: headers) { (encodingResult) inswitch encodingResult {case .success(let upload, _, _):upload.responseJSON { response inif let jsonValue = response.result.value {let json = JSON(jsonValue)print("上傳頭像json:\(json)")let code = json["code"].intif code == HttpConfig.ErrorCode.HttpOK {let dict = json["data"].dictionaryObjectsuccess(dict!)} else {let msg = json["msg"].stringHudToast.toastError(error: msg!)}}}case .failure(_):self.networkErrorHint()}}}
復制代碼

轉載于:https://juejin.im/post/5d4d6a83e51d453b721475fa

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247197.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

下載各種在線視頻及字幕

1. http://en.savefrom.net/ 支持30多個有名的網頁呢 ,YouTube等等 Supported resourcesHow to use?filefactory.comsendspace.com youtube.commetacafe.combreak.comdailymotion.comvimeo.comsevenload.commail.rusmotri.comyandex.rurambler.rutvigle.ruintv.ru…

React Icons

發現一個Icon庫,分享下哈; 使用React-Icons輕松地在React項目中包含流行圖標,它利用es6導入,允許只包含項目正在使用的圖標。 Installation (for standard modern project) npm install react-icons --save Usage import { FaBeer } from react-ico…

對flex深入研究一點

flex頂層設計 1.在任何流動的方向上(包括上下左右)都能進行良好的布局 2.可以以逆序 或者 以任意順序排列布局 3.可以線性的沿著主軸一字排開 或者 沿著側軸換行排列 4.可以彈性的在任意的容器中伸縮大小 5.可以使子元素們在容器主軸方向上 或者 在容器側軸方向上 進行對齊 主軸…

那些你可能還不知道的新發明

The Wello WaterWheel 對世界上六分之一的人來說,取水是個苦活:步行數小時,排隊等待,負重運送。 而花費在這個基本需求上的時間讓許多兒童不得不輟學,讓女人不能負起責任來處理家務或者工作以取得收入。在很多欠發達地…

AntD中Form的input正則校驗:不能輸入空格

什么是正則表達式? 在編寫處理字符串的程序或網頁時,經常有查找符合某些復雜規則的字符串的需要。正則表達式就是用于描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。 正則test() 方法 定義和用法 test() 方法用于檢測一…

引用數據類型分類

引用類既是自己定義的一個類,后面應用非常廣泛 類的定義格式 創建java文件,與類名相同 public class 類名{ 數據類型 屬性名稱1; 數據類型 屬性名稱2; … } publicclass Phone { /* * 屬性 */ String brand;// 品牌型號 String …

關于英文郵件一些tips

需要寫的英文郵件多了,就覺得很吃力,尤其是當需要經常寫給同一個人時。希望郵件的開頭、結尾、一些客套的話能有不同的表達~~ 郵件的開頭:感謝讀者是郵件開場白的好辦法。感謝您的讀者能讓對方感到高興,特別是之后你有事相求的情…

react之react-spring動效庫

react-spring具有基于鉤子和基于組件的API,這里將專門針對所有動畫使用具有基本狀態的鉤子. framer-motion也很好用,但是體積2M多,太大了勸退 react-spring才6KB. react-spring npm搜索 老官網react-spring 官網Getting started | React Spring 做了個橫向遍…

Java生鮮電商平臺-電商中海量搜索ElasticSearch架構設計實戰與源碼解析

Java生鮮電商平臺-電商中海量搜索ElasticSearch架構設計實戰與源碼解析 生鮮電商搜索引擎的特點 眾所周知,標準的搜索引擎主要分成三個大的部分,第一步是爬蟲系統,第二步是數據分析,第三步才是檢索結果。首先,電商的搜…

并行批處理多個文件 matlab

%初始化matlab并行運行環境 % Initialize Matlab Parallel Computing Environment CoreNum2; %設定機器CPU核心數量&#xff0c;我的機器是雙核&#xff0c;所以CoreNum2 if matlabpool(size)<0 %判斷并行計算環境是否已然啟動 matlabpool(open,local,CoreNum); %若尚未啟動…

答應我不要問TCP三次握手四次揮手

衍生頭疼問題如下。 請畫出三次握手和四次揮手的示意圖為什么連接的時候是三次握手&#xff1f;什么是半連接隊列&#xff1f;ISN(Initial Sequence Number)是固定的嗎&#xff1f;三次握手過程中可以攜帶數據嗎&#xff1f;如果第三次握手丟失了&#xff0c;客戶端服務端會如…

專業術語常用名詞縮寫中英文對照

A:Actuator 執行器A:Amplifier 放大器A:Attendance員工考勤A:Attenuation衰減AA:Antenna amplifier 開線放大器AA:Architectural Acoustics建筑聲學AC:Analogue Controller 模擬控制器ACD:Automatic Call Distribution 自動分配話務ACS:Access Control System出入控制系統AD:Ad…

推薦!國外程序員整理的機器學習資源大全

本列表選編了一些機器學習領域牛B的框架、庫以及軟件&#xff08;按編程語言排序&#xff09;。 C 計算機視覺 CCV —基于C語言/提供緩存/核心的機器視覺庫&#xff0c;新穎的機器視覺庫OpenCV—它提供C, C, Python, Java 以及 MATLAB接口&#xff0c;并支持Windows, Linux,…

做任務一定要看測試用例

做任務的時候一定要一開始就看測試用例。雖然有的任務自己很熟&#xff0c;但是如果不時時關注測試用例的話&#xff0c;還是容易走偏&#xff0c;到后頭再去修改的話&#xff0c;會浪費不少時間。 轉載于:https://www.cnblogs.com/superhuake/archive/2011/09/09/2172008.html…

深度學習鼻祖杰夫·辛頓及巨頭們的人才搶奪戰

摘要&#xff1a;深度學習已經誕生了數十年時間&#xff0c;但直到近幾年才受到各大科技公司的重視&#xff0c;被認為是硅谷科技企業的未來&#xff0c;今天為大家介紹的是深度學習的開山鼻祖Geoffrey Hinton。在過去的三十年&#xff0c;深度學習運動一度被認為是學術界的一個…

EM算法(Expectation Maximization Algorithm)

文章目錄 1. 前言 2.基礎數學知識2.1.凸函數2.2.Jensen不等式 3.EM算法所解決問題的例子 4.EM算法4.1.模型說明 4.2.EM算法推導 4.3.EM算法收斂性證明 4.4. EM算法E步說明 5.小結 6.主要參考文獻1. 前言 這是本人寫的第一篇博客(2013年4月5日發在cnblogs上,現在遷移過來)&#…

Julia語言:讓高性能科學計算人人可用

摘要&#xff1a;一群科學家對現有計算工具感到不滿&#xff1a;他們想要一套開源系統&#xff0c;有C的快速&#xff0c;Ruby的動態&#xff0c;Python的通用&#xff0c;R般在統計分析上得心應手&#xff0c;Perl的處理字符串處理&#xff0c;Matlab的線性代數運算能力……易…

View Animation

轉載一篇關于view animation的文章 http://blog.csdn.net/nerohoop/article/details/7245909 補充&#xff1a;當啟用animation來改變值的時候&#xff0c;值是立刻就改變了的&#xff0c;然后才開始動畫。 轉載于:https://www.cnblogs.com/mystory/archive/2012/12/18/2824029…

編程能力的四種境界

人類心理學研究中的一個基礎支撐科目就是分析人的潛意識和意識。 弗洛伊德是最早的一位能夠清楚的認定和描述我們的心理活動“領域”的人。 在他這著名的一生的早期&#xff0c;他就指出我們的意識里分“潛意識”&#xff0c;“前意識”&#xff0c;“意識”。 如 果我們想能清…

ファイルアップロード関連のjQueryプラグイン10攻略

ファイルアップロード関連のjQueryプラグイン&#xff11;&#xff10;ファイルアップロードといってもSWFを使ったりAJAXを使ったりと方法が色々あって、いろんなやり方ができるjQueryプラグインです。望みの挙動に近いものを選んでカスタマイズすれば作りたいものが最速で作れ…