如何使用Alamofire和会话管理器将MultipartFormData与其他发布参数一起附加? [重复]

问题描述 投票:0回答:2

当前我使用:

func post(_ url: URL, parameters: [String: Any]?, image: UIImage?, headers: [String: String]?, success: @escaping SuccessHandler, failure: @escaping ErrorHandler) {
    manager.request(url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { [weak self] response in
        //do something with a response
    }
}

如何将图像附加到请求?

ios swift alamofire
2个回答
0
投票

这是我的答案

 Alamofire.upload(multipartFormData: { multipartFormData in

            //Single image to pass here
            if image != nil{
                if let imageData = UIImageJPEGRepresentation(image!, 0.8) {
                    multipartFormData.append(imageData, withName: "Your key here", fileName: "\(UUID().uuidString).jpeg", mimeType: "image/jpeg")
                }
            }

            //Here array of UIImages
            if images.count != 0{
                for img in images{
                    if let imageData = UIImageJPEGRepresentation(img, 0.8) {
                        multipartFormData.append(imageData, withName: "Your key here", fileName: "\(UUID().uuidString).jpeg", mimeType: "image/jpeg")
                    }
                }
            }


            //params are your other post parameters
            if let parm = params{
                for (key, value) in parm {
                    multipartFormData.append((value as AnyObject).data(using: String.Encoding.utf8.rawValue)!, withName: key)
                }
            }


         }, to: "Your url here" , method: .post, headers: headers,
            encodingCompletion: { encodingResult in


                switch encodingResult {
                case .success(let upload, _, _):
                    //Success response
                case .failure(let encodingError):
                    //Failure response

                }
         })

0
投票

您应该考虑使用上传方法:

manager.upload(multipartFormData: { (multipartFormData) in

        for (key,value) in data{
            multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key)
        }

        if let file = self.attachedFile{
            if let f = file.getFile()
            {
                multipartFormData.append(f, withName: "some_name", fileName: "attachement.pdf", mimeType: "application/pdf")
            }
        }

    }, to:"Some URL",
       method: .post,
       encodingCompletion: { encodingResult in 


            switch encodingResult {
            case .success(let upload, _, _):
                //Success response
            case .failure(let encodingError):
                //Failure response

            }
     })
© www.soinside.com 2019 - 2024. All rights reserved.