Swift - 使用NSURLSession加载数据、下载、上传文件

Swift - 使用NSURLSession加载数据、下载、上传文件,第1张

概述NSURLSession类支持三种类型的任务:加载数据、下载和上传。下面通过样例分别进行介绍。 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 func  sessionLoadData(){     NSURLSession类支持三种类型的任务:加载数据、下载和上传。下面通过样例分别进行介绍。
1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建。
1 2 3 4 5 6 7 @H_419_31@ 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 func sessionLoadData(){ //创建NSURL对象 let urlString: String = "http://hangge.com" url: NSURL ! = (string:urlString) //创建请求对象 request: NSURLRequest = ( URL : url) session = NSURLSession .sharedSession() dataTask = session.dataTaskWithRequest(request, completionHandler: {(data,response,error) -> VoID in if error != nil { print (error?.code) (error?.description) } else { str = Nsstring (data: data!,enCoding: NSUTF8StringEnCoding ) (str) } }) as NSURLSessionTask //使用resume方法启动任务 dataTask.resume() }

2,使用Download Task来下载文件 (1)不需要获取进度 使用sharedSession()和downloadTaskWithRequest方法即可
1 2 3 4 5 6 7 @H_419_31@ 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 func sessionSimpleDownload(){ //下载地址 let url = NSURL (string: "http://hangge.com/blog/images/logo.png" ) //请求 request: NSURLRequest = ( URL : url!) session = NSURLSession .sharedSession() //下载任务 downloadTask = session.downloadTaskWithRequest(request, completionHandler: { (location: ?,response: NSURLResponse NSError ?) -> VoID in //输出下载文件原来的存放目录 print ( "location:\(location)" ) //location位置转换 locationPath = location!.path //拷贝到用户目录 documnets: String NSHomeDirectory () + "/documents/1.png" @H_741_403@//创建文件管理器 fileManager: NSfileManager .defaultManager() try! fileManager.moveItemAtPath(locationPath!,topath: documnets) "new location:\(documnets)" ) }) //使用resume方法启动任务 downloadTask.resume() }

(2)实时获取进度
需要使用自定义的NSURLSession对象和downloadTaskWithRequest方法 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 @H_898_502@ 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
import UIKit class VIEwController : UIVIEwController , NSURLSessionDownloadDelegate { overrIDe vIEwDIDLoad() { super .vIEwDIDLoad() sessionSeniorDownload() } //下载文件 sessionSeniorDownload(){ //下载地址 url = (string: "http://hangge.com/blog/images/logo.png" ) //请求 : url!) session = currentSession() NSURLSession //下载任务 downloadTask = session.downloadTaskWithRequest(request) //使用resume方法启动任务 downloadTask.resume() } //创建一个下载模式 currentSession() -> { var predicate:dispatch_once_t = 0 currentSession: ? = nil dispatch_once(&predicate,{ config = NSURLSessionConfiguration .defaultSessionConfiguration() currentSession = (configuration: config,delegate: self ) }) return currentSession! } //下载代理方法,下载结束 func URLSession (session: NSURLSessionDownloadTask ) { //下载结束 ( "下载结束" ) //输出下载文件原来的存放目录 "location:\(location)" ) //location位置转换 locationPath = location.path //拷贝到用户目录 documnets: NSHomeDirectory () + "/documents/2.png" //创建文件管理器 fileManager: NSfileManager .defaultManager() "new location:\(documnets)" ) } //下载代理方法,监听下载进度 dIDWriteData bytesWritten: Int64 ) { //获取进度 written: CGfloat = ( )(totalBytesWritten) total: )(totalBytesExpectedToWrite) pro: = written/total "下载进度:\(pro)" ) } //下载代理方法,下载偏移 dIDResumeatOffset fileOffset: ) { //下载偏移,主要用于暂停续传 } dIDReceiveMemoryWarning() { .dIDReceiveMemoryWarning() } 3,使用Upload Task来上传文件 22
sessionUpload(){ //上传地址 "http://hangge.com/" ) //请求 : url!) .sharedSession() //上传数据流 documents = "/documents/1.png" imgData = NSData (contentsOffile: documents) uploadTask = session.uploadTaskWithRequest(request,fromData: imgData) { (data: NSURLResponse NSError ?) -> in //上传完毕后 "上传完毕" ) //使用resume方法启动任务 uploadTask.resume() }
总结

以上是内存溢出为你收集整理的Swift - 使用NSURLSession加载数据、下载、上传文件全部内容,希望文章能够帮你解决Swift - 使用NSURLSession加载数据、下载、上传文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)