大佬教程收集整理的这篇文章主要介绍了ios – 如何使用Moya Swift使用多部分请求上传图像?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
typealias updateUserAvatarParameters = (userId: Int,image: UIImagE) enum APITarget { case updateUserAvatar(parameters: updateUserAvatarParameters) } extension APITarget: TargetType { public var baseURL: URL { return URL(String: "http://domain/api")! } public var path: String { switch self { case .updateUserAvatar: return "/postuserimage" } } public var method: Moya.Method { switch self { default: return .post } } public var task: Task { switch self { case .updateUserAvatar(let parameters): let imageData = UIImagePNGRepresentation(parameters.imagE) ?? Data() let userIdData = parameterS.UserId.String.data(using: String.Encoding.utf8) ?? Data() let imageMultipartFormData = MultipartFormData(provider: .data(imageData),name: "img",filename: "user_avatar.jpeg",mimeType: "image/jpeg") let userIdMultipartFormData = MultipartFormData(provider: .data(userIdData),name: "cusId") return .uploadMultipart([imageMultipartFormData,userIdMultipartFormData]) } } public var sampleData: Data { return Data() } public var headers: [String : String]? { switch self { case .updateUserAvatar: return ["Content-type" : "multipart/form-data"] default: return ["Content-type" : "application/json"] } } }@H_673_5@但是,当我提出请求时,我得到了@L_748_3@moyaError: @H_673_5@
let parameters = updateUserAvatarParameters(userId: 1,image: pickedImagE) provider.request(.updateUserAvatar(parameters: parameters),completion: { result in switch result { case .success(let responsE): do { try _ = response.filtersuccessfulStatusCodes() print("200 - 299: \(response.data)") } catch { print(error) // This code will run because the statusCode is 500 } case .failure(let error): print("Failure: \(error)") } })@H_673_5@ @H_673_5@我不知道我做错了什么,我也不知道什么是statusCode 500?有谁知道为什么? @H_673_5@另外,当我使用相同的设置(url,参数……)向Alamofire提出请求时,一切正常: @H_673_5@
Alamofire.upload(multipartFormData: { multipartFormData in let imageData = UIImagePNGRepresentation(pickedImagE) ?? Data() let userIdData = userId.String.data(using: String.Encoding.utf8) ?? Data() multipartFormData.append(imageData,withName: "img",mimeType: "image/jpeg") multipartFormData.append(userIdData,withName: "cusId") },to: "http://domain/api/postuserimage",encodingCompletion: { result in switch result { case .success(let upload,_,_): upload.uploadProgress(closure: { progress in print("Upload Progress: \(progress.fractionCompleted)") }) upload.responseJSON(completionHandler: { response in print(response.result.value) }) case .failure(let encodingError): print(encodingError) } })
var task: Task { switch self { case .updateProfilePic(let memberID,let imagE): let imageData = UIImageJPEGRepresentation(image,1.0) let memberIdData = memberID.data(using: String.Encoding.utf8) ?? Data() var formData: [Moya.MultipartFormData] = [Moya.MultipartFormData(provider: .data(imageData!),name: "user_iR_430_11845@g",filename: "user.jpeg",mimeType: "image/jpeg")] formData.append(Moya.MultipartFormData(provider: .data(memberIdData),name: "member_id")) return .uploadMultipart(formData) }@H_673_5@在Moya多部分请求中,我们必须将参数作为multipartdata形式及其密钥名称传递.
以上是大佬教程为你收集整理的ios – 如何使用Moya Swift使用多部分请求上传图像?全部内容,希望文章能够帮你解决ios – 如何使用Moya Swift使用多部分请求上传图像?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。