0

私はNSURLSessionUploadTask画像をアップロードするために使用しています。

アップロードは機能します。画像がサーバーに正常に投稿されました。

これは、新しい を作成するために呼び出されるメソッドですNSURLSessionUploadTask。はフォーマットNSDataされた画像であり、その中に入っているすべてのがらくたが含まれています。NSDatawithPostRequest: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になるのか誰にも分かりますか?

4

1 に答える 1