博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS NSURLSession UploadTask(上传任务)
阅读量:6329 次
发布时间:2019-06-22

本文共 3606 字,大约阅读时间需要 12 分钟。

1. 简单的上传任务

// 上传文件- (void)uploadTask {    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/uploads/123.png"];    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];    request.HTTPMethod = @"put";    [request setValue:[self getAuth:@"admin" pwd:@"1"] forHTTPHeaderField:@"Authorization"];//    [request setValue:@"Basic YWRtaW46MQ==" forHTTPHeaderField:@"Authorization"];    // 本地文件    NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"head1.png" withExtension:nil];    [[[NSURLSession sharedSession] uploadTaskWithRequest:request fromFile:fileUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {        NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];        NSLog(@"%@", str);    }] resume];}// 获取授权的字符串- (NSString *)getAuth:(NSString *)name pwd:(NSString *)pwd {    // 拼字符串 admin:1    NSString *tmpStr = [NSString stringWithFormat:@"%@:%@",name,pwd];    // base64编码    tmpStr = [self base64Encode:tmpStr];    return [NSString stringWithFormat:@"Basic %@", tmpStr];}// base64编码- (NSString *)base64Encode:(NSString *)str {    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];    return [data base64EncodedStringWithOptions:0];}

2. 监听进度的上传

#import "ViewController.h"@interface ViewController () 
@property (nonatomic, strong) NSURLSession *session;@end@implementation ViewController// 懒加载- (NSURLSession *)session { if (_session == nil) { NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; _session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:0]; } return _session;}- (void)viewDidLoad { [super viewDidLoad];}- (void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event { [self uploadTask];}// 上传文件,监听进度- (void)uploadTask { NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/uploads/123.png"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"put"; [request setValue:[self getAuth:@"admin" pwd:@"1"] forHTTPHeaderField:@"Authorization"]; // 本地文件 NSURL *fileUrl = [[NSBundle mainBundle] URLForResource:@"head1.png" withExtension:nil]; [[self.session uploadTaskWithRequest:request fromFile:fileUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"---%@", str); }] resume];}#pragma mark - 上传进度代理方法// 上传进度- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend { // 进度 = 已发送的 / 一共需要发送的 float process = totalBytesSent * 1.0 / totalBytesExpectedToSend; NSLog(@"%f", process);}// 上传完成- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { NSLog(@"上传完成");}// 获取授权的字符串- (NSString *)getAuth:(NSString *)name pwd:(NSString *)pwd { // 拼字符串 admin:1 NSString *tmpStr = [NSString stringWithFormat:@"%@:%@",name,pwd]; // base64编码 tmpStr = [self base64Encode:tmpStr]; return [NSString stringWithFormat:@"Basic %@", tmpStr];}// base64编码- (NSString *)base64Encode:(NSString *)str { NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; return [data base64EncodedStringWithOptions:0];}@end

3. NSURLSessionConfiguration配置

img_71393a88464ab32194a25bfa80fc18dd.png
NSURLSessionConfigration.png

转载地址:http://ivwoa.baihongyu.com/

你可能感兴趣的文章
[转]CENTOS LINUX安装并使用NFS共享文件
查看>>
Android AES加密算法及其实现
查看>>
Entity Framework公共的增删改方法
查看>>
hdu1698 Just a Hook 线段树:成段替换,总区间求和
查看>>
dorado spring知识补充
查看>>
Android -- ViewPager、Fragment、状态保存、通信
查看>>
如果想消除随机性的感觉
查看>>
.NET网站自动浏览器分享,解决IIS6应用池回收后第一次访问慢问题
查看>>
关于验证码识别3
查看>>
【JavaScript】javascript常用的东西
查看>>
Cucumber 入门一
查看>>
c++ 单例模式
查看>>
JAVA反射机制
查看>>
Java几款性能分析工具的对比
查看>>
SVN使用教程总结
查看>>
Chrome各个版本小常识
查看>>
阿里云图片压缩上传代码
查看>>
JavaScript函数式编程
查看>>
C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》
查看>>
java对象数组
查看>>