带有查询参数的Alamofire.upload

时间:2015-12-22 14:44:12

标签: alamofire

我正在使用Alamofire.upload将图片作为.POST多部分上传到我的服务器。但我的服务器始终只将参数作为查询字符串获取,并仅将multipart用于文件数据。所以在我的请求中我还需要将一些参数放到URL中,但似乎Alamofire.upload没有带参数参数的变体。

Alamofire.upload(
    .POST,
    "https://httpbin.org/post?user=\(userId)&photo=\(photoTitle)",
    multipartFormData: { multipartFormData in
        multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn")
    },
    encodingCompletion: nil
)

现在我只是自己把所有参数直接形成请求字符串:"https://httpbin.org/post?user=\(userId)&photo=\(photoTitle)"。 有没有更好的方法将查询参数传递给Alamofire.upload

1 个答案:

答案 0 :(得分:1)

可以做得更好的是Alamofire.ParameterEncoding,但需要对请求进行一些解决。

    var req: NSMutableURLRequest?
    (req!, _) = Alamofire.ParameterEncoding.URL.encode(
        NSURLRequest(URL: NSURL(string: "https://httpbin.org")!),
        parameters: ["user": userId, "photo": photoTitle]
    )

    Alamofire.upload(
        .POST,
        req!.URLString,
        multipartFormData: { multipartFormData in
            multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn")
        },
        encodingCompletion: nil
    )