本文介绍了如何使用Alamofire 5.0.0-beta.3(Swift 5)上传图像(多部分)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用分段上传图片.此代码可以在 swift 4 和 Alamofire 4中正常工作..请为此提供任何解决方案.
I am working on uploading image using multipart. This Code Working fine in swift 4 and Alamofire 4. Please give any solution for this.
public class func callsendImageAPI(param:[String: Any],arrImage:[UIImage],imageKey:String,URlName:String,controller:UIViewController, withblock:@escaping (_ response: AnyObject?)->Void){ Alamofire.upload(multipartFormData:{ MultipartFormData in for (key, value) in param { MultipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key) } for img in arrImage { guard let imgData = img.jpegData(compressionQuality: 1) else { return } MultipartFormData.append(imgData, withName: imageKey, fileName: FuncationManager.getCurrentTimeStamp() + ".jpeg", mimeType: "image/jpeg") } },usingThreshold:UInt64.init(), to: "URL", method:.post, headers:["Content-type": "multipart/form-data", "Content-Disposition" : "form-data"], encodingCompletion: { encodingResult in switch encodingResult { case .success(let upload, , ): upload.uploadProgress(closure: { (Progress) in print("Upload Progress: \(Progress.fractionCompleted)") }) upload.responseJSON { response in switch(response.result) { case .success(_): let dic = response.result.value as! NSDictionary if (dic.object(forKey: "status")! as! Int == 1){ withblock(dic.object(forKey: "data") as AnyObject) }else if (dic.object(forKey: Message.Status)! as! Int == 2){ print("error message") }else{ print("error message") } case .failure(_): print("error message") } } case .failure(let encodingError): print("error message") } })}谢谢.
推荐答案请参考以下代码.
public class func callsendImageAPI(param:[String: Any],arrImage:[UIImage],imageKey:String,URlName:String,controller:UIViewController, withblock:@escaping (_ response: AnyObject?)->Void){ let headers: HTTPHeaders headers = ["Content-type": "multipart/form-data", "Content-Disposition" : "form-data"] AF.upload(multipartFormData: { (multipartFormData) in for (key, value) in param { multipartFormData.append((value as! String).data(using: String.Encoding.utf8)!, withName: key) } for img in arrImage { guard let imgData = img.jpegData(compressionQuality: 1) else { return } multipartFormData.append(imgData, withName: imageKey, fileName: FuncationManager.getCurrentTimeStamp() + ".jpeg", mimeType: "image/jpeg") } },usingThreshold: UInt64.init(), to: URL.init(string: URlName)!, method: .post, headers: headers).response{ response in if((response.error != nil)){ do{ if let jsonData = response.data{ let parsedData = try JSONSerialization.jsonObject(with: jsonData) as! Dictionary<String, AnyObject> print(parsedData) let status = parsedData[Message.Status] as? NSInteger ?? 0 if (status == 1){ if let jsonArray = parsedData["data"] as? [[String: Any]] { withblock(jsonArray as AnyObject) } }else if (status == 2){ print("error message") }else{ print("error message") } } }catch{ print("error message") } }else{ print(response.error!.localizedDescription) } } }很高兴为您提供帮助:)
Happy to help you :)
更多推荐
如何使用Alamofire 5.0.0
发布评论