Swift中文件和图片上传处理
生活随笔
收集整理的這篇文章主要介紹了
Swift中文件和图片上传处理
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言:基于Alamofire4.5網(wǎng)絡(luò)框架開發(fā)的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//構(gòu)造發(fā)送參數(shù)let parameters: Parameters = ["user_id":model.userId]//請求頭let localToken = Tools.readFromUserDefault(key: localToken)!// 頭部需要的內(nèi)容包裝let headers: HTTPHeaders = [ "Accept": "application/json;charset=utf-8","lang":"en-US","token": localToken]Alamofire.upload(multipartFormData: { (formData) in// "fname" 這里是服務(wù)器對應(yīng)好的字段formData.append(zipData as Data, withName: "fname", fileName: fileName, mimeType:"application/zip")//拼接參數(shù)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() // 網(wǎng)絡(luò)錯誤處理 }}} 復(fù)制代碼圖片上傳
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)!// 頭部需要的內(nèi)容包裝let headers: HTTPHeaders = [ "Accept": "application/json;charset=utf-8","lang":"en-US","token": localToken]Alamofire.upload(multipartFormData: { (formData) in// 參數(shù)解釋://withName:和后臺服務(wù)器的name要一致 ;fileName:可以充分利用寫成用戶的id,但是格式要寫對; mimeType:規(guī)定的,要上傳其他格式可以自行百度查一下formData.append(imgData as Data, withName: "fname", fileName: fileName, mimeType:"image/jpeg")//如果需要上傳多個文件,就多添加幾個append,或則for-in語句進(jìn)行循環(huán)處理 // 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()}}} 復(fù)制代碼轉(zhuǎn)載于:https://juejin.im/post/5d4d6a83e51d453b721475fa
總結(jié)
以上是生活随笔為你收集整理的Swift中文件和图片上传处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ngnix搭建静态网页和安装wordpr
- 下一篇: matlab中clc、close、clo