首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSession,上传任务-获取实际传输的字节数

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

Stack Overflow用户
提问于 2015-05-29 14:40:49
回答 1查看 3.6K关注 0票数 5

我收到一些bug报告,说我的iOS应用程序在连接速度慢的情况下无法上传图片。虽然我的超时可能还不够高,但还有另一个问题。

我发现上传进度很快达到了100%,尽管我在Charles中看到字节仍在传输中。我使用NSURLSession的以下方法:

代码语言:javascript
复制
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
                                     fromData:(NSData *)bodyData
                            completionHandler:(void (^)(NSData *data,
                                                        NSURLResponse *response,
                                                        NSError *error))completionHandler

并实现以下委托方法来接收进度事件:

代码语言:javascript
复制
- (void)URLSession:(NSURLSession *)session
              task:(NSURLSessionTask *)task
   didSendBodyData:(int64_t)bytesSent
    totalBytesSent:(int64_t)totalBytesSent
totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend

实际上我使用的是AFNetworking 2.5.2,它使用这种方法。我的理论是,这个委托方法报告从电话发送的字节,而不是实际传输的字节。

以非常低的连接发送300kb将立即发送5-6个包,并在等待接收时报告100%的进度。

是否可以获得已确认传输的实际字节数的进度事件?

EN

回答 1

Stack Overflow用户

发布于 2015-05-29 14:54:05

是的,这是可能的!

代码语言:javascript
复制
[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
     float prog = (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100);
     [self.progBar setProgress:prog];
     NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));

     }];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30522793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档