2017-01-22 95 views
0

我一直在尝试使用下面的上传方式上传到我的本地服务器的视频:在multipartFormDataAlamofire上传multipartFormData忽略参数

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) 

      } 

     }) 

而是附加参数,我利用以下`路由器”。

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 
    } 
} 

但是,当我将视频上传到服务器时,参数丢失。任何想法为什么?

回答

0

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

URL编码(目的地:.queryString )URLEncoding.queryString

这适用于Alamofire 4.x版 我希望这可以帮助。

欲了解更多信息,你也可以阅读this