苹果原生NSURLSession的上传和下载
2014-03-13 00:02
288 查看
关于NSURLSession的上传和下载
在iOS7.0后,苹果公司新推出了一个NSURLSession来代替NSURLConnection。NSURLConnection默认是在 主线程执行的。而NSURLSession是在其他线程上执行的。本篇主要实现了下载和上传,比起NSURLConnection更加简单。线程控制掌握 更加清晰。
#pragma mark -下载
上传
在iOS7.0后,苹果公司新推出了一个NSURLSession来代替NSURLConnection。NSURLConnection默认是在 主线程执行的。而NSURLSession是在其他线程上执行的。本篇主要实现了下载和上传,比起NSURLConnection更加简单。线程控制掌握 更加清晰。
#pragma mark -下载
- (IBAction)upLoad { // 0. 判断imageView是否有内容 if (_imageView.image == nil) { NSLog(@"image view is empty"); return; } // 0. 上传之前在界面上添加指示符 UIActivityIndicatorView *indicator = [[UIActivityIndicatorViewalloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; // 设置位置??? CGSize size = _imageView.bounds.size; indicator.center = CGPointMake(size.width / 2.0, size.height / 2.0); [self.imageView addSubview:indicator]; [indicator startAnimating]; // 1. URL NSString *urlStr = @"http://192.168.3.251/uploads/123.jpg"; NSURL *url = [NSURL URLWithString:urlStr]; // 2. Request -> PUT,request的默认操作是GET NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:5.0f]; request.HTTPMethod = @"PUT"; // *** 设置网络请求的身份验证! *** // 1> 授权字符串 NSString *authStr = @"admin:123456"; // 2> BASE64的编码,避免数据在网络上以明文传输 // iOS中,仅对NSData类型的数据提供了BASE64的编码支持 NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; NSString *encodeStr = [authData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithCarriageReturn]; NSString *authValue = [NSString stringWithFormat:@"Basic %@", encodeStr]; [request setValue:authValue forHTTPHeaderField:@"Authorization"]; // 3. Session NSURLSession *session = [NSURLSessionsharedSession]; // 4. UploadTask NSData *imageData = UIImageJPEGRepresentation(_imageView.image, 0.75); NSURLSessionUploadTask *upload = [session uploadTaskWithRequest:request fromData:imageData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // 上传完成后,data参数转换成string就是服务器返回的内容 NSString *str = [[NSStringalloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"OK -> %@", str); if (error != nil) { NSLog(@"ERROR -> %@", error.localizedDescription); } else { } [NSThreadsleepForTimeInterval:5.0f]; dispatch_async(dispatch_get_main_queue(), ^{ [indicator stopAnimating]; [indicator removeFromSuperview]; }); }]; [upload resume]; }
上传
相关文章推荐
- 使用原生的Servlet封装文件上传和下载
- NSURLSession加载数据 下载上传
- Servlet和Jsp实现原生的上传与下载文件
- iOS开发-使用NSURLSession实现文件断点下载,文件离线续传以及图片上传
- NSURLSession实现文件下载和文件上传
- iOS之网络—— NSURLSessionDataTask文件离线断点下载、NSURLSession文件上传、AFN基本使用、Cocoapods安装
- Swift语言IOS8开发战记26 NSURLSession加载数据、上传下载
- 关于NSURLSession的上传和下载
- 原生servlet配合smartupload实现批量下载和批量上传
- 关于NSURLSession的上传和下载
- 仿web中的form表单使用苹果原生网络请求进行文件上传
- java文件原生方式的上传和下载,适合新手学习
- Servlet和Jsp实现原生的上传与下载文件
- javascript原生移动云编程10 - 如何调用相机并上传下载图片视频
- 使用NSURLSession进行上传下载
- IOS开发—网络请求、上传下载、断点续传(NSURLSession)
- PHP使用原生函数实现文件上传及下载
- iOS开发——网络篇——NSURLSession,下载、上传代理方法,利用NSURLSession断点下载,AFN基本使用,网络检测,NSURLConnection补充
- IOS7 新特性 NSURLSession的上传和下载
- 关于 NSURLSession 的上传和下载