2017-01-22 97 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