2016-08-11 11 views
1

ファイルのアップロードの進捗状況を取得するにはどうすればよいですか?Alamofireを使用してファイルアップロードに進捗状況を追加

// import Alamofire 
    func uploadWithAlamofire() { 
    let image = UIImage(named: "myImage")! 

    // define parameters 
    let parameters = [ 
     "hometown": "yalikavak", 
     "living": "istanbul" 
    ] 

    // Begin upload 
    Alamofire.upload(.POST, "upload_url", 
     // define your headers here 
     headers: ["Authorization": "auth_token"], 
     multipartFormData: { multipartFormData in 

     // import image to request 
     if let imageData = UIImageJPEGRepresentation(image, 1) { 
      multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "myImage.png", mimeType: "image/png") 
     } 

     // import parameters 
     for (key, value) in parameters { 
      multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key) 
     } 
     }, // you can customise Threshold if you wish. This is the alamofire's default value 
     encodingMemoryThreshold: Manager.MultipartFormDataEncodingMemoryThreshold, 
     encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .Success(let upload, _, _): 
      upload.responseJSON { response in 
      debugPrint(response) 
      } 
     case .Failure(let encodingError): 
      print(encodingError) 
     } 
    }) 
    } 

進捗ブロックを追加する必要があるとわかっていますが、進捗ブロックを追加できる場所がわかりません。

.progress { (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in 
     println("\(totalBytesWritten)/\(totalBytesExpectedToWrite)") 
    } 

上記のブロックを追加したいのですが、ビデオアップロードの推定時間を計算するにはどうすればよいですか。

答えて

2

あなたは次のように行うことができます:あなたはまた、Alamofireでアップロード方法の他のバージョンを使用して進捗状況を持つことができます

Alamofire.upload(
    .POST, 
    URLString: "http://httpbin.org/post", 
    multipartFormData: { multipartFormData in 
     multipartFormData.appendBodyPart(fileURL: unicornImageURL, name: "unicorn") 
     multipartFormData.appendBodyPart(fileURL: rainbowImageURL, name: "rainbow") 
    }, 
    encodingCompletion: { encodingResult in 
     switch encodingResult { 
     case .Success(let upload, _, _): 
      upload.progress { bytesRead, totalBytesRead, totalBytesExpectedToRead in 

      let progress: Float = Float(totalBytesRead)/Float(totalBytesExpectedToRead) // you can give this progress to progressbar progress 

       let value = Int(progress * 100) // this is the percentage of the video uploading 


       print(totalBytesRead) 

      } 
      upload.responseJSON { request, response, result in 
       debugPrint(result) 
      } 
     case .Failure(let encodingError): 
      print(encodingError) 
     } 
    } 
) 
+0

uitableviewCellでアップロードの進行状況を表示するにはどうすればよいですか? –

0

let request = Alamofire.upload(.POST, "upload_url", headers: ["Authorization": "auth_token"], data: imageData!) 


request.responseJSON { (response: Response<AnyObject, NSError>) in 
    switch response.result { 
     case let .Success(result): 
      // do something with data 
      print(result) 
     case let .Failure(error): 
      // Error occurred 
      print(error) 
    } 
} 

request.progress { (bytesWritten: Int64, totalBytesWritten: Int64, totalExpectedBytesToWritten: Int64) in 

    let uploadProgress = Float(totalBytesWritten)/Float(totalExpectedBytesToWritten) 
    // Keep track of progress 
} 
関連する問題