2017-06-29 9 views
0
let configuration = URLSessionConfiguration.default 
    configuration.timeoutIntervalForRequest = 15.0 
    configuration.timeoutIntervalForResource = 15.0 
    self.alamofireManager = Alamofire.SessionManager(configuration: configuration) 


self.alamofireManager.upload(multipartFormData: { (multipartFormData) in 
     multipartFormData.append(UIImageJPEGRepresentation(newImage, 1)!, withName: "file", fileName: "image.jpeg", mimeType: "image/jpeg") 
     if let parameters = params{ 
      for (key, value) in parameters { 
       multipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key) 
      } 
     } 
    }, to:apiURL, method: .post, headers: authHeader) 
    { (result) in 
     switch result { 
     case .success(let upload, _, _): 
      upload.uploadProgress(closure: { (progress) in 
       DDLogInfo("Image Upload Progress : \(progress)") 
      }) 
      upload.responseJSON { response in 
       //print response.result 
      } 
      break 
     case .failure(let error): 
      if error._code == NSURLErrorTimedOut || error._code == NSURLErrorNetworkConnectionLost { 
       print("Time Out/Connection Lost Error") 
      } 
      DDLogInfo("Error :\(error.localizedDescription)") 
      break 
     } 
    } 

ここでは、デフォルトのセッション動作を利用していますが、タイムアウトまたはネットワーク接続が失われてもエラーは発生しません。Alamofireはマルチパートアップロードでネットワークの損失/タイムアウトエラーを発生しません。

私は要求を開始した後にインターネット接続を切断していますが、エラーはありません。

答えて

1

私はGitHubで反応したように、これは末尾のクロージャのresultを介した混乱のためです。これは、マルチパートエンコーディングの結果であり、ネットワーク要求ではありません。ネットワークリクエストステータスを取得するには、uploadにあるresponseJSONをチェックインしてください。

関連する問題