如何使用Alamofire在多部分表单数据中追加数组?

编程入门 行业动态 更新时间:2024-10-23 11:22:38
本文介绍了如何使用Alamofire在多部分表单数据中追加数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用Alamofire上传包含多部分表单数据的图像,但是在传递数组作为参数时遇到了一些问题.

I am uploading image with multipart form data using Alamofire but getting some problem while i am passing an array as parameter.

根据请求,我需要将所有数据传递给letter. 这是我的工作方式.

As per request i need to pass all data into letter. Here is how i am doing.

let data = try! JSONSerialization.data(withJSONObject: arrSelectedRecipientsID, options: .prettyPrinted) let jsonString = String(data: data, encoding: .utf8)! let paramArr : [String : Any] = [ "message" : txtvwMessage.text!, "status": "draft", "recipient_ids": jsonString ] let parameter : [String : Any] = ["letter" : paramArr] let accesstoken = Utilities.retriveValueFromDefault(forKey: UDKey.kUserAuthentication_Token) as String let client = Utilities.retriveValueFromDefault(forKey: UDKey.kUserClient) as String let uid = Utilities.retriveValueFromDefault(forKey: UDKey.kUserUID) as String let headersInfo : HTTPHeaders = [ "Content-Type" : "multipart/form-data", "Accept" : "application/json", "access-token" : accesstoken, "client" : client, "uid" : uid ] fileUploadWithParameter(Constant.ServerAPI.kPostLetters, images: letterImage, header: headersInfo, parameters: parameter, success: { (response) in print(response) }) { (progress) in }

这是Alamofire请求方法.

Here is Alamofire request method.

func fileUploadWithParameter(_ url: String,images:NSMutableArray,header : [String : String], parameters: [String:Any], success:@escaping (NSDictionary)->(),progressHandler:@escaping(_ progress: Double)->Void) { Alamofire.upload(multipartFormData: { multipartFormData in for i in 0..<images.count { let rotatedImage = images[i] as! UIImage if let imgData = UIImageJPEGRepresentation(rotatedImage, 0.8) { multipartFormData.append(imgData, withName: "letter[photos]",fileName: "0\(i).jpg", mimeType: "image/jpg") } } for (key, value) in parameters { //multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key ) let paramsData:Data = NSKeyedArchiver.archivedData(withRootObject: value) multipartFormData.append(paramsData, withName: key) } }, to: url, method:.post, headers:header) { (result) in print("\n\n\nRequest URL :- \(url)\nParameters :- \(parameters)") switch result { case .success(let upload, _, _): upload.responseJSON { response in if response.error != nil { print("Error :- \((response.error?.localizedDescription)!)\n\n\n") } if let jsonDict = response.result.value as? NSDictionary { print("Response :- \(jsonDict)\n\n\n") } else { print("Error :- \(Constant.ErrorMessage.kCommanError)\n\n\n") } } case .failure(let encodingError): print("Error :- \(encodingError.localizedDescription)\n\n\n") } } }

邮递员工作得很好,所以有人可以在我做错事的地方帮我.

Postman works well so can someone please help me where i am doing wrong.

期望使用API​​,正确的json应该是

API expected The proper json should be

{ "letter": { "message": "Type your message here...!!!", "recipient_ids": [183, 184], "status": "draft" } }

API在红宝石中运行,它说我正在发送字符串.请帮助我找出问题所在.

API is in ruby on rails and it says i am sending string. Please help me to find out what is issue.

推荐答案

最后,通过在请求中添加单独的附件来完成此任务.这是如何以多部分形式的数据请求传递数组.

Finally get it done with separate append in request. Here is how you can pass an array in multipart form data request.

Alamofire.upload(multipartFormData: { multipartFormData in for i in 0..<self.letterImage.count { let rotatedImage = self.letterImage[i] as! UIImage if let imgData = UIImageJPEGRepresentation(rotatedImage, 0.8) { multipartFormData.append(imgData, withName: "letter[photos][]",fileName: "0\(i).jpg", mimeType: "image/jpg") } } multipartFormData.append("\(message)".data(using: String.Encoding.utf8)!, withName: "letter[message]") multipartFormData.append("draft".data(using: String.Encoding.utf8)!, withName: "letter[status]") for (_,value) in self.arrSelectedRecipientsID.enumerated() { multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: "letter[recipient_ids][]") } }

更多推荐

如何使用Alamofire在多部分表单数据中追加数组?

本文发布于:2023-11-26 17:21:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1634489.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   表单   如何使用   数据   Alamofire

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!