私はNSURLSessionUploadTask
を使って画像をアップロードしています。NSURLSessionUploadTask originalRequest httpBody is Null
アップロードが機能します。イメージはサーバーに正常に投稿されます。
これは、呼び出されるメソッドで、新しい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 NSData
と、渡されたImageの既知のNSData
を比較することでこれを行うことができるように感じています。
しかし、上記のメソッドが呼び出されたときに、[task.originalRequest HTTPBody]
はNULLである
は誰もが知っていますか?
[task.originalRequest URL]を確認してください。 – PnotNP
複数のアップロードが同時に行われている場合、URLは同じではないでしょうか?さらに、それぞれについてのユニークなことは、NSDataだけです。メソッド*は、メソッドにNSDataを渡す必要がありますが、NSDataをメソッドに渡す必要があります。 –
これですべてのアップロードはURLを変更することなく同じサーバーになります。おそらくそれは言及すべきである。 – PnotNP