在iOS Swift中使用Alamofire 5从MultipartformData中上传带有参数的文件

编程入门 行业动态 更新时间:2024-10-21 05:55:40
本文介绍了在iOS Swift中使用Alamofire 5从MultipartformData中上传带有参数的文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试上传带有参数(multipartformdata)的文件,但是我无法使用新版本的Alamofire 5进行上传,如果您有使用Alamofire 5的经验,请与我分享.

I am trying upload files with parameters (multipartformdata) but i can't do it with new version Alamofire 5, if you have some experience with Alamofire 5 please share it with me.

func uploadPluckImage(imgData : Data, imageColumnName : String, url:String,httpmethod:HTTPMethod,completionHandler: @escaping (NSDictionary?, String?) -> ()){ let token = UserDefaults.standard.string(forKey: PrefKeys.loginToken) ?? "" let authorization = ["Authorization" : "Bearer \(token)"] let parameters: Parameters? parameters = [ "garbageCollector": 0, "stuff_uuid": "2b4b750a-f4a6-4d61-84ce-7c42b5c030ee", "delete_file" : "" ] let headers : HTTPHeader? headers = ["Authorization" : "Bearer \(token)"] let imageURl = "68.183.152.132/api/v1/stuff/uploader" AF.upload(multipartFormData: { (multipart: MultipartFormData) in let imageData = self.firstImage.image?.jpegData(compressionQuality: 0.7) multipart.append(imageData, withName: "file", fileName: "file.png", mimeType: "image/png") for (ker, value) in parameters!{ multipart.append(value as! String).data(using: .utf8)!, withName: key) } },usingThreshold: UInt64.init(), to: imageURl, method: .post, headers: headers, encodingCompletion: { (result) in switch result { case .success(let upload, _, _): upload.uploadProgress(closure: { (progress) in print("Uploading") }) break case .failure(let encodingError): print("err is \(encodingError)") break } }) }

推荐答案

在Alamofire 5中上传方法略有更改

Upload method slightly changed in Alamofire 5

func upload(image: Data, to url: Alamofire.URLRequestConvertible, params: [String: Any]) { AF.upload(multipartFormData: { multiPart in for (key, value) in params { if let temp = value as? String { multiPart.append(temp.data(using: .utf8)!, withName: key) } if let temp = value as? Int { multiPart.append("\(temp)".data(using: .utf8)!, withName: key) } if let temp = value as? NSArray { temp.forEach({ element in let keyObj = key + "[]" if let string = element as? String { multiPart.append(string.data(using: .utf8)!, withName: keyObj) } else if let num = element as? Int { let value = "\(num)" multiPart.append(value.data(using: .utf8)!, withName: keyObj) } }) } } multiPart.append(image, withName: "file", fileName: "file.png", mimeType: "image/png") }, with: url) .uploadProgress(queue: .main, closure: { progress in //Current upload progress of file print("Upload Progress: \(progress.fractionCompleted)") }) .responseJSON(completionHandler: { data in //Do what ever you want to do with response }) }

希望这对您有帮助

如果您不太了解上述内容,请进行以下扩展:

In case you don't quite get the above, here is an expansion:

let uploadRequest: UploadRequest = AF.upload(multipartFormData: multipartFormData, with: ...) let completionHander: (AFDataResponse<Any>) -> Void) = { result in //Do what ever you want to do with response, which is a DataResponse<Success, AFError> } // Adds that completion hander to the UploadRequest uploadRequest.responseJSON(completionHandler: completionHander)

更多推荐

在iOS Swift中使用Alamofire 5从MultipartformData中上传带有参数的文件

本文发布于:2023-11-26 02:54:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1632352.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:参数   上传   文件   Swift   iOS

发布评论

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

>www.elefans.com

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