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

Posted

技术标签:

【中文标题】带有 JSON 参数的多部分数据 Alamofire【英文标题】:Multipart data Alamofire with JSON parameters 【发布时间】:2016-06-13 13:10:19 【问题描述】:

我正在尝试通过 multipartFormData 发送上传图片

我想发送这样的东西:


    'user': 
        'id': 'toto',
        // …
        picture: // the image data
    

如何使用 multipartFormData 对象处理这种格式?

目前我的这段代码运行良好,但没有上面的 JSON 格式:

multipartFormData.appendBodyPart(data: dataImage, name: "picture")
if let parameters = parameters 
     for (key, value) in parameters 
                    multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :key)
                
      

提前感谢您的帮助?????????

【问题讨论】:

【参考方案1】:
if let _image = image 
    if let imageData = UIImageJPEGRepresentation(_image, 0.5) 
        multipartFormData.appendBodyPart(data: imageData, name: imageName, fileName: "avatar.png", mimeType: "image/png")
    


if let parameters = parameters 
    for (key, value) in parameters 
        multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
     

但是参数需要是这样的:

let parameters:[String: AnyObject] = [
        "user[id]":1
]

图片名称应为user[picture]

这对我有用

【讨论】:

感谢您的回答。我对此有几乎相同的结果。但是现在我需要将 multipartFormData 中的所有数据放在一个目录中的字段用户中。 将图像命名为:user[picture] 为我工作....和答案中的参数示例...... 哇哇好!!您的意思是在附加数据中: multipartFormData.appendBodyPart(data: imageData, name: "user[picture]") ? 对我不起作用。奇怪的。可能是服务器端出了点问题。

以上是关于带有 JSON 参数的多部分数据 Alamofire的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 3.0 中带有图像和其他参数的多部分数据

使用 alamofire 的多部分/表单数据

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

使用 Retrofit 上传 JSON 格式的多部分图像数据?

使用 json 数据和使用 afnetworking 的多部分请求

如何从文件系统发送包含 json 字符串和大文件的多部分数据的 HTTP 请求?