Swift的上传和下载库:Transporter

yne7 9年前

Transporter 是一个方便上传和下载的库。

特性

  • 支持并发或者顺序上传或者下载多个文件

  • 支持后台上传和下载

  • 支持进程跟踪 (单个任务或者任务组)

  • 支持重置,停止,取消,重试任务

  • header 可配置

  • 请求参数可配置

快速示例

let path = NSBundle.mainBundle().pathForResource("bigfile", ofType: "zip")let fileUrl = NSURL(fileURLWithPath: path!)!let task = UploadTask(url: "http://server.com", file: fileUrl)    .progress { sent, total in          let per = Double(sent) / Double(total)          println("uploading: \(per)")      }    .completed { response, json, error in          println("completed")      }       Transporter.add(task1 <--> task2 <--> task3)                     // concurrent tasks              .progress { bytes, total in                  let per = Double(bytes) / Double(total)                  println("concurrent tasks: \(per)")              }            .completed { alltasks in                  println("task1, task2, task3: completed")              }            .add(task4 --> task5 --> task6)                       // serial tasks               .progress { bytes, total in                  println("serial tasks")              }            .resume()

用法

// downloading tasklet task = DownloadTask(url: downloadUrl, destination: des)    .progress { bytes, total in          let per = Double(bytes) / Double(total)          println("downloading: \(per)")      }    .completed { response, _, error in          println("completed")      }// uploading task// upload types: File, Data, Streamlet task = UploadTask(url: "http://server.com", data: uploadData)    .progress { sent, total in          let per = Double(sent) / Double(total)          println("uploading: \(per)")      }    .completed { response, json, error in          println("completed")      }// tasktask.headers = ["key": "value"]  task.params = ["key": "value"]  task.pause()  task.cancel()  task.retry// background handling// add the following method in the app delegatefunc application(application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: () -> Void) {      Transporter.handleEventsForBackgroundURLSection(identifier, completionHandler: completionHandler)  }// Transporter configurationsTransporter.headers = [key: value]  Transporter.timeoutIntervalForRequest = 30.0Transporter.timeoutIntervalForResource = 24 * 60 * 60.0Transporter.HTTPMaximumconnectionsPerHost = 5

项目主页:http://www.open-open.com/lib/view/home/1427697411990