请求的接口

一般用户修改头像都是修改的头像的连接,这里我们后台是直接上传的文件,所以我就基于Alamofire封装了一个带有文件参数的网络请求方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class func requestFile(urlString:String,params:[String:Any], method:HTTPMethod,success:@escaping(_ response:[String:Any])->()){ let url = "\(BASE_URL)\(api_common_mid)\(urlString)" print("\(url)\n\(params)") Alamofire.upload(multipartFormData: { (formdata) in for (key,value) in params{ if let content = value as? String { formdata.append(content.data(using: String.Encoding.utf8)!, withName: key) } if let content = value as? UIImage{ formdata.append(content.getData(), withName: key) } } }, to: url) { (result) in switch result { case .success(let upload, _, _): upload.responseJSON { response in self.responseApply(response, success: success) } case .failure(let encodingError): print(encodingError) } } }
|
调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| NetworkTool.requestFile(urlString: api_my_modification,params: ["uid":"1","username":"xxxx","file":UIImage(named:"xxx.png")], method: .post) { (response) in if let res = response["data"] as? Int{ if res == 1 { showSuccess("修改成功") self.ischangedImage = false self.update_request() return } showError("修改失败") }else{ showError("修改失败") } }
|
注:图片转Data有可能会为空,解决办法是把要转换的图片重新绘制下就行了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| extension UIImage{ func getData() -> Data{ let data = UIImageJPEGRepresentation(self.getNewImage(), 0.9) return data! } fileprivate func getNewImage() -> UIImage{ let w = self.size.width let h = self.size.height UIGraphicsBeginImageContext(self.size) self.draw(in: CGRect(x: 0, y: 0, width: w, height: h)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage! } }
|