Parameters Alamofire upload multipartFormData忽略参数

Parameters Alamofire upload multipartFormData忽略参数,parameters,upload,swift3,alamofire,router,Parameters,Upload,Swift3,Alamofire,Router,我一直在尝试使用以下上载方法将视频上载到本地服务器: Alamofire.upload( multipartFormData: { multipartFormData in multipartFormData.append( url, withName: "video", fileName: "video.mp4", mimeType: "video/mp4" ) }, with: Router.postVideo( p

我一直在尝试使用以下上载方法将视频上载到本地服务器:

Alamofire.upload(
        multipartFormData: { multipartFormData in

            multipartFormData.append( url, withName: "video", fileName: "video.mp4", mimeType: "video/mp4" )

        },
        with: Router.postVideo( parameters: params ),
        encodingCompletion: { encodingResult in

            switch encodingResult
            {

                case .success( let upload, _, _ ):

                    upload.uploadProgress { progress in
                        print( progress.fractionCompleted )
                    }

                    upload.responseJSON { response in
                        debugPrint(response)
                    }

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

            }

        })
我没有在
multipartFormData
块中添加参数,而是使用以下“路由器”

enum APIRouter: URLRequestConvertible
{
    static let baseURLString = "https://base/api/"

    case postVideo( parameters: Parameters )

    var method: HTTPMethod
    {
        switch self
        {
            case .postVideo:
                return .post
            ...
        }
    }

   var parameters: Parameters?
   {
        switch self
        {
            case .postVideo( let parameters ):
                return parameters
            ....
        }
    }

    var path: String
    {
       switch self
       {
            case .postVideo:
                return “videos"
            ....  
        }
    }

    public func asURLRequest() throws -> URLRequest
    {
        // Create url request
        let url = try APIRouter.baseURLString.asURL()
        var urlRequest = URLRequest( url: url.appendingPathComponent( path ) )

        // Set request method
        urlRequest.httpMethod = method.rawValue

        // Set parameters
        if let params = self.parameters
        {
            urlRequest = try URLEncoding.default.encode( urlRequest, with: params )
        }

        return urlRequest
    }
}

但是,当我将视频上传到服务器时,参数丢失了。你知道为什么吗?

我知道这个问题有点老了,但我最近遇到了同样的问题,我解决了这个问题,没有使用默认的URL编码,而是创建了一个新的URL编码,如下所示:

URLEncoding(目标:.queryString)URLEncoding.queryString 简而言之

这适用于Alamofire4.x。 我希望这有帮助

有关更多信息,您也可以阅读