Swift的上传和下载库:Transporter
yne7
10年前
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