ファイルからのストリームとしての http PUT 要求と要求本文に問題があります。
ファイルのサイズに関係なく、「NSURLErrorDomain -1021リクエストボディストリームが使い果たされました」というエラーが表示されます
メソッドを実装することで、この問題をオーバーライドできることはわかっています。
-(NSInputStream*)connection:(NSURLConnection *)connection needNewBodyStream:(NSURLRequest *)request
しかし、この方法はファイル全体を再度アップロードすることになり、40 MB のファイルが 80 Mb のデータ転送になるため、適切ではありません。
NSData と同じファイルを取得してリクエスト本文を設定すると、正常に動作します。
リクエスト Async を送信して、両方で同じ結果を同期しようとしました。
これが私のコードで、シンプルでAppleの例に似ています:
NSURL *url = [NSURL URLWithString:[self concatenatedURLWithPath:path]];
NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
[req setHTTPMethod:@"PUT"];
[req setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setTimeoutInterval:DEFAULT_TIMEOUT];
[req setValue:_contentType forHTTPHeaderField:@"Content-Type"];
NSInputStream *fileStream = [NSInputStream inputStreamWithFileAtPath:_dataStreamLocation];
[req setHTTPBodyStream:fileStream];
_connection = [[NSURLConnection connectionWithRequest:req delegate:self] retain];
私は何か間違ったことをしていますか?何か不足していますか?