Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSURLSession,上载任务-获取传输的实际字节_Ios_Afnetworking 2_Nsurlsession_Nsurlsessionuploadtask - Fatal编程技术网

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

Ios NSURLSession,上载任务-获取传输的实际字节,ios,afnetworking-2,nsurlsession,nsurlsessionuploadtask,Ios,Afnetworking 2,Nsurlsession,Nsurlsessionuploadtask,我收到错误报告说我的iOS应用程序在慢速连接上无法上传图像。虽然我的超时时间可能不够高,但还有另一个问题 我发现上传进度很快就达到了100%,尽管我在Charles身上看到字节仍在传输。我使用以下NSURLSession方法: - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyDa

我收到错误报告说我的iOS应用程序在慢速连接上无法上传图像。虽然我的超时时间可能不够高,但还有另一个问题

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

- (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?这是当进度开始像上面的问题所描述的那样怪异时