Ios NSURLSession,上载任务-获取传输的实际字节
我收到错误报告说我的iOS应用程序在慢速连接上无法上传图像。虽然我的超时时间可能不够高,但还有另一个问题 我发现上传进度很快就达到了100%,尽管我在Charles身上看到字节仍在传输。我使用以下NSURLSession方法:Ios NSURLSession,上载任务-获取传输的实际字节,ios,afnetworking-2,nsurlsession,nsurlsessionuploadtask,Ios,Afnetworking 2,Nsurlsession,Nsurlsessionuploadtask,我收到错误报告说我的iOS应用程序在慢速连接上无法上传图像。虽然我的超时时间可能不够高,但还有另一个问题 我发现上传进度很快就达到了100%,尽管我在Charles身上看到字节仍在传输。我使用以下NSURLSession方法: - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyDa
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromData:(NSData *)bodyData
completionHandler:(void (^)(NSData *data,
NSURLResponse *response,
NSError *error))completionHandler
并实现以下委托方法以接收进度事件:
- (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%的进度
是否可以获取已确认传输的实际字节数的进度事件?是,这是可能的
[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));
}];
我假设
操作
是一个AFHTTPRequestOperation
。恐怕这与上面使用会话的方法有相同的“缺陷”。如果您以正确的方式执行上载操作,那么它应该不会产生任何问题。我已经上传了30张图片,使用了相同的操作,还跟踪了答案中提到的进度。确保您使用的是“multipart”。您是否尝试过使用Charles之类的代理应用程序将上传速度限制在30 kpbs?这是当进度开始像上面的问题所描述的那样怪异时