swift - Alamofire,在参数中上传带有结构的MultipartFormData

标签 swift swift3 alamofire swifty-json

上传MultipartFormData时如何在参数中添加struct:

let parameters = [
"parameter1": "test1",
"parameter2": "test2"]

Alamofire.upload(multipartFormData: { multipartFormData in
        for (key, value) in parameters {
            multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
        }
        multipartFormData.append(structObject, withName: "user")

      if let imageData = UIImageJPEGRepresentation(image, 1) {
      multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png",      mimeType: "image/png")
    }
    }, to: url, encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                if let value = response.result.value as AnyObject?{
                    let json = JSON(value)
                } else {

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

        }
    }
    )

我可以毫无问题地添加额外参数,但我无法将对象添加到参数数组

谢谢

最佳答案

在 multipartFormData 下面添加以下内容以在参数映射之间循环并附加参数键和值:

let parameters = [
"parameter1": "test1",
"parameter2": "test2"]

Alamofire.upload(multipartFormData: { multipartFormData in
        multipartFormData.append(structObject, withName: "user")

      if let imageData = UIImageJPEGRepresentation(image, 1) {
      multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.png",      mimeType: "image/png")
      for (key, value) in parameters {
           multipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
      }
    }
    }, to: url, encodingCompletion: { encodingResult in
        switch encodingResult {
        case .success(let upload, _, _):
            upload.responseJSON { response in
                if let value = response.result.value as AnyObject?{
                    let json = JSON(value)
                } else {

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

        }
    }
    )

关于swift - Alamofire,在参数中上传带有结构的MultipartFormData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42260207/

相关文章:

ios - 将字典数组从 Plist 显示到 Tableview,Swift (Array<Dictionary<String, AnyObject>>)

swift - 当 View 改变时计时器终止

ios - 使用 prepareForSegue 分配对象在 Swift 3 中变为 nil

swift - 如何从 View Controller 中触发异步请求

ios - AlamofireImage 下载到 CoreData

json - 需要帮助使用 Alamofire 使用 Swift 解析 JSON

ios - UIBarButtonItem 选择器函数未被调用

ios - 将 Assistant V1 MessageResponse 解析为 JSON

ios - 自动调整 UITableView 中嵌入的 UICollectionView 单元格大小不起作用

ios - Firebase InvalidPathValidation hasChild 在 Swift 中