iOS:如何增加 NSURLSession 上传任务的块大小?

Posted

技术标签:

【中文标题】iOS:如何增加 NSURLSession 上传任务的块大小?【英文标题】:iOS: how to increase chunk size for NSURLSession upload task? 【发布时间】:2013-11-21 21:08:16 【问题描述】:

我正在处理一个需要将大文件上传到服务器的项目。我使用 NSURLSession 来设置后台传输服务。一切似乎都很好,但我相信它会继续发送 32K 的块。我想知道是否有办法增加块大小?

这是设置上传任务的示例代码:

NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:identifier];
sessionConfig.HTTPMaximumConnectionsPerHost = 1;
NSURLSession *upLoadSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSMutableURLRequest *request = [self configureURLRequest];
NSURLSessionUploadTask *uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:filePath]];

[uploadTask resume];

这是委托示例代码:

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend 

DLog(@"didSendBodyData: %lld, totalBytesSent: %lld, totalBytesExpectedToSend: %lld", bytesSent, totalBytesSent, totalBytesExpectedToSend);    


再一次,有没有办法增加使用 NSURLSession 上传的块大小?默认为 32K。

【问题讨论】:

【参考方案1】:

使用 NSURLSession API 时无法控制块大小。作为旁注,您可能不想这样做。随着设备执行从 WiFi 更改为蜂窝网络或更换蜂窝塔等操作,您的带宽将会发生变化。我预计操作系统会不断适应这些复杂的变化变量,通过限制您的应用程序带宽来做出反应。你确实想要这个,因为在一个脆弱的蜂窝网络上发出贪婪的请求很可能会失败。

【讨论】:

以上是关于iOS:如何增加 NSURLSession 上传任务的块大小?的主要内容,如果未能解决你的问题,请参考以下文章

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

无法在 iOS 中使用 NSURLSession 多部分表单数据上传文件

ios开发网络学习十二:NSURLSession实现文件上传

iOS NSURLSession 实现网络请求-文件下载-上传-后台下载

在 iOS8 中使用 NSUrlSession 使用流请求进行后台上传

NSURLSession,上传任务 - 获取传输的实际字节