时间:2015-04-03 来源:

IOS网络开发NSURLSession(四)UploadTask(上传数据+图片) 【系统运维】

原创blog,转载请注明出处 blog.csdn.net/hello_hwc

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend{ self.progressview.progress = totalBytesSent/(float)totalBytesExpectedToSend; } 后续:网络部分,web前端制作还会更新授权div前端切图,证书一篇,div前端切图AFNetworking一篇web切图报价,一些网络的基本概念一篇.然后,手机html制作转向更新数据存储这一块(CoreData以及IOS的文件系统).

Demo效果 上传数据 使用一个工具网站符合w3c标准,想要学习RestAPI的同学可以使用这个网站的API做一些练习. http://jsonplaceholder.typicode.com/

上传图片,符合w3c标准图片可以拍照网页外包接活,也可以从相册里选取,jpg或psd转html上传的返回data是一个html网页web前端制作,用webview显示. 这里的上传服务器也是选择一个共工具网站 http://www.freeimagehosting.net/upl.php

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend; 二 上传数据 核心代码如下

使用Stream一定要实现这个代理方法,web前端制作因为Session没办法在重新尝试发送Stream的时候找到数据源.(例如需要授权信息的情况).这个代理函数承接网页制作,提供了Stream的数据源.

1.2 三种上传数据的方式 NSData - 如果对象已经在内存里 使用以下两个函数初始化

uploadTaskWithRequest:fromData: uploadTaskWithRequest:fromData:completionHandler: Session会自动计算Content-length的Header 通常,承接网页制作还需要提供一些服务器需要的Header,Content-Type就往往需要提供.

File-如果对象在磁盘上,网站div+css这样做有助于降低内存使用. 使用以下两个函数进行初始化

timeoutInterval //timeout的时间间隔 HTTPMethod //HTTP方法 //设置HTTP表头信息 – addValue:forHTTPHeaderField: – setValue:forHTTPHeaderField: HTTP header的具体信息参见Wiki,常用的header一定要熟悉 http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://jsonplaceholder.typicode.com/posts"]]; [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];//这一行一定不能少,符合w3c标准因为后面是转换成JSON发送的 [request addValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setHTTPMethod:@"POST"]; [request setCachePolicy:NSURLRequestReloadIgnoringCacheData]; [request setTimeoutInterval:20]; NSDictionary * dataToUploaddic = @{self.keytextfield.text:self.valuetextfield.text}; NSData * data = [NSJSONSerialization dataWithJSONObject:dataToUploaddic options:NSJSONWritingPrettyPrinted error:nil]; NSURLSessionUploadTask * uploadtask = [self.session uploadTaskWithRequest:request fromData:data completionHandler:^(NSData *data, NSError *error) { if (!error) { NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; self.responselabel.text = dictionary.description; }else{ UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"Error" message:error.localizedFailureReason preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]]; [self presentViewController:alert animated:YES completion:nil]; } }]; [uploadtask resume]; 三 上传图片 核心部分代码

一 NSURLSessionUploadTask概述 1.1NSMutableURLRequest 上传数据的时候web前端制作,一般要使用REST API里的PUT或者POST方法.所以,div+css制作要通过这个类来设置一些HTTP配置信息.常见的包括

NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.freeimagehosting.net/upload.php"]]; [request addValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"]; [request addValue:@"text/html" forHTTPHeaderField:@"Accept"]; [request setHTTPMethod:@"POST"]; [request setCachePolicy:NSURLRequestReloadIgnoringCacheData]; [request setTimeoutInterval:20]; NSData * imagedata = UIImageJPEGRepresentation(self.imageview.image, NSURLResponse *response, NSError *error) { NSString * htmlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; UploadImageReturnViewController * resultvc = [self.storyboard instantiateViewControllerWithIdentifier:@"resultvc"]; resultvc.htmlString = htmlString; [self.navigationController pushViewController:resultvc animated:YES]; self.progressview.hidden = YES; [self.spinner stopAnimating]; [self.spinner removeFromSuperview]; }]; [uploadtask resume]; 代理函数

uploadTaskWithRequest:fromFile: uploadTaskWithRequest:fromFile:completionHandler: 同样,手机html制作会自动计算Content-Length,Session会自动创建一个.如果Server需要额外的Header信息网页外包接活,NSURLSessionDelegate,NSURLSessionTaskDelegate同样适用于UploadTask

uploadTaskWithStreamedRequest: 注意,web前端制作这种情况下一定要提供Server需要的Header信息承接网页制作,例如Content-Type和Content-Length.

欢迎关注我的IOS-SDK详解专栏 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html

Stream 使用这个函数创建

前言: UploadTask继承自DataTask.不难理解,div前端切图因为UploadTask只不过在Http请求的时候web切图报价,把数据放到Http Body中.所以,手机html制作用UploadTask来做的事情符合w3c标准,通常直接用DataTask也可以实现.不过,符合w3c标准能使用封装好的API会省去很多事情网页外包接活,何乐而不为呢? Demo下载链接 http://download.csdn.net/detail/hello_hwc/8557791 Demo里包括了三种Task的使用,jpg或psd转html我想对想要学习NSURLSession的初学者还是有点帮助的.

$(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

点击次数:5666
作者:
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日android背景图按比例缩放方法 【Web前端】2015年03月13日第13周【项目1-动物这样叫】(3)【移动开发】2015年05月28日JS添加网页桌面快捷方式的代码详细整理2014年01月29日hdu1241(OilDeposits) 【移动开发】2015年08月03日通过OpenSSL获取证书扩展属性之一:“基本约束” 【综合】2015年08月25日标准C语言的三字符组及替换拼写的分隔符 【综合】2015年04月07日Linux权限详解,多用户多组各种权限配置原理【编程语言】2015年01月13日更新数据库中信息【Web前端】2015年01月12日codeforces229D动态规划【数据库】2015年07月09日利用Hexo搭建Github的个人主页 【移动开发】2015年05月25日猫猫学IOS(二)UI之按钮操作点击变换移动放大缩小旋转 【移动开发】2015年03月20日《暗黑3》将在5月15日发布 ,,2016年06月23日完美跳槽,注意这八点!2015年08月27日android学习十(android的SharePreferences存储) 【编程语言】2014年11月14日CentOS6.4中升级编译安装GCC4.8.1+GDB7.6.1+Eclipse以及Kdump配置 【Web前端】2015年06月03日Javasocket访问网页【架构设计】2015年04月24日JS学习笔记防止发生命名冲突2014年01月29日java线程阻塞问题排查方法【编程语言】2015年08月14日iOS页面跳转后更改左边导航栏的文字还有箭头颜色 【移动开发】2015年04月09日关于运用高德地图api,并在api上显示标注的小应用 【移动开发】2014年12月25日用WPS表格来分班级2014年01月28日仿微信朋友圈发图片【编程语言】2015年06月01日uva12296(切割凸多边形)【Web前端】2015年08月03日jdk自带常用命令行工具使用 【移动开发】2015年06月11日脚本与批处理合二为一2014年01月29日Java语言读取配置文件config.properties 【移动开发】2015年04月07日ios开发过程中屏幕方向判断的问题 【云计算】2014年12月11日activemq与mysql持久化 【移动开发】2015年08月25日哈希计算工具GtkHash ,,2016年07月24日获取HTMLDOM节点元素的方法的总结2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)