我第一次使用阿拉莫菲尔.我使用的是最新版本的Alamofire 1.3.1.我想在一个API调用中发送一个图像、一个视频和一些POST参数.我使用的是多部分表单数据.多部件模块正在工作.我面临发送额外POST参数params的问题.下面是我的代码."params"是包含额外参数的字典?如何在请求中附加这些POST参数.请帮忙

        var fullUrl :String = Constants.BASE_URL + "/api/CompleteChallenge"
         var params = [
        "authKey": Constants.AuthKey,
        "idUserChallenge": "16",
        "comment": "",
        "photo": imagePath,
        "video": videoPath,
        "latitude": "1",
        "longitude": "1",
        "location": "india"
    ]

    let imagePathUrl = NSURL(fileURLWithPath: imagePath!)
    let videoPathUrl = NSURL(fileURLWithPath: videoPath!)

        Alamofire.upload(
        .POST,
        URLString: fullUrl, // http://httpbin.org/post
        multipartFormData: { multipartFormData in
            multipartFormData.appendBodyPart(fileURL: imagePathUrl!, name: "photo")
            multipartFormData.appendBodyPart(fileURL: videoPathUrl!, name: "video")
        },
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .Success(let upload, _, _):
                upload.responseJSON { request, response, JSON, error in

                  }
                }
            case .Failure(let encodingError):

            }
        }
    )

推荐答案

我终于找到了解决办法.

我们可以将数据作为multipartformdata追加到请求中.

下面是我的代码.

  Alamofire.upload(
        .POST,
        URLString: fullUrl, // http://httpbin.org/post
        multipartFormData: { multipartFormData in
            multipartFormData.appendBodyPart(fileURL: imagePathUrl!, name: "photo")
            multipartFormData.appendBodyPart(fileURL: videoPathUrl!, name: "video")
            multipartFormData.appendBodyPart(data: Constants.AuthKey.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"authKey")
            multipartFormData.appendBodyPart(data: "\(16)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"idUserChallenge")
            multipartFormData.appendBodyPart(data: "comment".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"comment")
            multipartFormData.appendBodyPart(data:"\(0.00)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"latitude")
            multipartFormData.appendBodyPart(data:"\(0.00)".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"longitude")
            multipartFormData.appendBodyPart(data:"India".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!, name :"location")
        },
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .Success(let upload, _, _):
                upload.responseJSON { request, response, JSON, error in


                }
            case .Failure(let encodingError):

            }
        }
    )

EDIT 1:对于那些试图发送数组而不是float、int或string的人,他们可以将数组或任何类型的数据 struct 转换为Json字符串,将此Json字符串作为普通字符串传递.并在后端解析这个json字符串以获得原始数组

Swift相关问答推荐

DynamicView Content的修改视图?

在运行时检测蒸汽工人的类型

SWIFT中MAP的静态方法包装器

为什么ClosedRange<;Int&>包含的速度比预期慢340万倍?

有条件地在同一视图上设置两个不同的过渡

Swift 运算符中 inout 的行为

如何为我的项目设置生命周期选项?

为什么Swift可以在没有足够信息的情况下推断类型?

如何隐藏集合视图中特定的单元格,以避免出现空白空间?

CardStack 和 Lottie

这是 Int64 Swift Decoding 多余的吗?

Swift 中的Combine和didSet有什么区别?

将基于MyProtocol的泛型函数的参数更改为使用存在的any MyProtocol或some MyProtocol是否会受到惩罚?

What is "SwiftPM.SPMRepositoryError error 5"?

iOS 判断应用程序是否可以访问麦克风

关闭 UITableViewRowAction

如何在 Swift 中复制字典?

为什么我可以转换为 NSManagedObject 但不能转换为我的实体类型?

Swift 2.0 中的 do { } catch 不处理从这里抛出的错误

TabView 在切换选项卡时重置导航堆栈