0

我正在使用NSURLSessionUploadTask上传图片。

上传工作。图片已成功发布到我的服务器。

这是被称为创建新的方法NSURLSessionUploadTaskNSDataNSData格式的图像,并且是withPostRequest:其中NSMutableRequest包含所有垃圾的图像。

- (void) uploadImage:(NSData*)data withPostRequest:(NSMutableURLRequest*)postRequest {

    NSURLSessionUploadTask * uploadTask = [_session uploadTaskWithRequest:postRequest fromData:data completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) {

            //MAIN THREAD ACCESS UPDATE TO THE GUI OR DISPLAY ERRORS
            dispatch_async(dispatch_get_main_queue(), ^{

               //UPDATE THE GUI ON COMPLETION
            });

        }];

        // START THE TASK
        [uploadTask resume];
}

上传时调用此委托方法以显示进度。此方法在发送成功的字节时调用。

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

NSData * taskData = [task.originalRequest HTTPBody];
            NSLog(@"Task Data: %@", taskData);

}

但是,如果我有多个上传,我需要能够检查哪个上传的进度正确。我觉得您可以通过将 task.originalRequestNSData与已知NSData的传递图像进行比较来做到这一点。

但是,当调用上述方法时,[task.originalRequest HTTPBody]NULL

有谁知道为什么那会是空的?

4

1 回答 1

0

您可以将其子类化NSSessionUploadTask并具有与之关联的标识符。

@interface NSSessionUploadTaskId : NSObject {
   NSUInteger taskIdentifier;
}

NSURLSessionTasktaskIdentifier有财产,但我不知道如何使用它。

@property(readonly) NSUInteger taskIdentifier;

标识符唯一地标识给定会话中的任务。

于 2016-10-06T21:10:42.547 回答