一、NSURLSession實(shí)現(xiàn)文件上傳
(1)實(shí)現(xiàn)文件上傳的方法
/*
第一個(gè)參數(shù):請(qǐng)求對(duì)象
第二個(gè)參數(shù):請(qǐng)求體(要上傳的文件數(shù)據(jù))
block回調(diào):
NSData:響應(yīng)體
NSURLResponse:響應(yīng)頭
NSError:請(qǐng)求的錯(cuò)誤信息
*/
NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request
fromData:data completionHandler:^(NSData * __nullable data,
NSURLResponse * __nullable response,
NSError * __nullable error)
(2)設(shè)置代理,在代理方法中監(jiān)聽文件上傳進(jìn)度
/*
調(diào)用該方法上傳文件數(shù)據(jù)
如果文件數(shù)據(jù)很大,那么該方法會(huì)被調(diào)用多次
參數(shù)說(shuō)明:
totalBytesSent:已經(jīng)上傳的文件數(shù)據(jù)的大小
totalBytesExpectedToSend:文件的總大小
*/
-(void)URLSession:(nonnull NSURLSession *)session
task:(nonnull NSURLSessionTask *)task
didSendBodyData:(int64_t)bytesSent
totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend
{
NSLog(@"%.2f",1.0 * totalBytesSent/totalBytesExpectedToSend);
}
(3)關(guān)于NSURLSessionConfiguration相關(guān) (" 具體內(nèi)容請(qǐng)看 'AFNetworking框架基本使用' 相關(guān)介紹! ")
01 作用:可以統(tǒng)一配置NSURLSession,如請(qǐng)求超時(shí)等
02 創(chuàng)建的方式和使用
//創(chuàng)建配置的三種方式
+ (NSURLSessionConfiguration *)defaultSessionConfiguration;
+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration;
+ (NSURLSessionConfiguration *)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier NS_AVAILABLE(10_10, 8_0);
//統(tǒng)一配置NSURLSession
-(NSURLSession *)session
{
if (_session == nil) {
//創(chuàng)建NSURLSessionConfiguration
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
//設(shè)置請(qǐng)求超時(shí)為10秒鐘
config.timeoutIntervalForRequest = 10;
//在蜂窩網(wǎng)絡(luò)情況下是否繼續(xù)請(qǐng)求(上傳或下載)
config.allowsCellularAccess = NO;
_session = [NSURLSession sessionWithConfiguration:config
delegate:self delegateQueue:[NSOperationQueue mainQueue]];
}
return _session;
}