使用 Alamofire 的多部分 POST

Posted

技术标签:

【中文标题】使用 Alamofire 的多部分 POST【英文标题】:Multipart POST with Alamofire 【发布时间】:2014-11-05 23:21:21 【问题描述】:

我想在 Swift 中使用 Alamofire 向我的 Rails 服务器发出请求。 我有一个简单的对象,我想对其进行序列化,以及一些我想作为多部分编码数据附加的图像。

在我的 Rails 方面,它就像一个请求一样简单:

post :create, object: parameters, files: ['file1', 'file2'], format: :json

使用 Alamofire 最优雅的方法是什么?

【问题讨论】:

【参考方案1】:

我还没有深入研究 Alamo Fire,但阅读文档让我相信 Alamo Fire 目前不支持此功能。特别是标题“我何时应该使用 AFNetworking”下的文档末尾指出:

将 AFNetworking 用于以下任何一项:

UIKit 扩展,比如异步加载图片到 UIImageView TLS 验证,使用 AFSecurityManager 需要 NSOperation 或 NSURLConnection 的情况,使用 AFURLConnectionOperation 网络可达性监控,使用 AFNetworkReachabilityManager 使用 AFHTTPRequestSerializer 构建多部分 HTTP 请求

【讨论】:

感谢 Brandon,我为此通话导入了 AFNetworking,它似乎可以正常工作。【参考方案2】:

我不知道你在问什么

在 Swift 3 中

但为了实现 MultiPartFormdata 以下代码可能很有用

Alamofire.upload(multipartFormData:  (multipartFormData) in
        multipartFormData.append(UIImageJPEGRepresentation(self.Imgprofile.image!, 1)!, withName: "Prescription", fileName: "Profile_Image.jpeg", mimeType: "image/jpeg")
    , to:"Your URL Here")
     (result) in
        switch result 
        case .success(let upload, _, _):
            print(result)

            upload.uploadProgress(closure:  (progress) in
                print(progress)
            )

            upload.responseJSON  response in
                //print response.result
                print(response);
            

        case .failure(let encodingError):
            print(encodingError);
        
    

这是最新的工作语法

【讨论】:

以上是关于使用 Alamofire 的多部分 POST的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire 和 BOX API 的多部分表单上传

如何处理Alamofire中的多部分/相关数据?

带有 JSON 参数的多部分数据 Alamofire

具有特定 JSON 要求的多部分表单数据 POST

Alamofire 4 - 使用 gzip 编码上传多部分

如何发送 jpeg 的多部分响应