Alamofire上传multipartFormData忽略参数
Posted
技术标签:
【中文标题】Alamofire上传multipartFormData忽略参数【英文标题】:Alamofire upload multipartFormData ignores parameters 【发布时间】:2017-01-22 22:35:39 【问题描述】:我一直在尝试使用以下上传方法将视频上传到我的本地服务器:
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
块中附加参数,而是使用以下 `Router'。
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
但是,当我将视频上传到服务器时,缺少参数。任何想法为什么?
【问题讨论】:
【参考方案1】:我知道这个问题有点老了,但我最近遇到了同样的问题,我通过不使用默认的 URLEncoding 而是创建一个这样的新问题来解决它:
URLEncoding(目的地:.queryString) 或者 URLEncoding.queryString 简称
这适用于 Alamofire 4.x。 我希望这会有所帮助。
更多信息你也可以阅读this。
【讨论】:
以上是关于Alamofire上传multipartFormData忽略参数的主要内容,如果未能解决你的问题,请参考以下文章