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。 我希望这有帮助 有关更多信息,您也可以阅读