私はNSURLSessionUploadTask
画像をアップロードするために使用しています。
アップロードは機能します。画像がサーバーに正常に投稿されました。
これは、新しい を作成するために呼び出されるメソッドですNSURLSessionUploadTask
。はフォーマットNSData
された画像であり、その中に入っているすべてのがらくたが含まれています。NSData
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.originalRequestを渡された ImageNSData
の既知のものと比較することで、これを行うことができると思います。NSData
ただし、上記のメソッドが呼び出されると[task.originalRequest HTTPBody]
、NULL
なぜそれがnullになるのか誰にも分かりますか?