5

を使用してバックグラウンドで 2GB の大きなファイルをアップロードしようとしていますNSURLSessionUploadTask。サービスはマルチパート形式を使用するため、バックグラウンドでアップロードするために、リクエストの本文で一時ファイルを作成しています。次に、uploadTask を使用してアップロードをスケジュールし、ファイルのアップロードが終了したら一時ファイルを削除します。 .

NSURLSessionUploadTask *uploadTask = [[self backgroundNSURLSession] uploadTaskWithRequest:uploadRequest fromFile:filePath]; [uploadTask resume];

1.4 GB より小さいファイルではアップロードは正常に機能しましたが、2 GB のビデオ ファイルをアップロードしようとすると、アップロードに失敗します。ファイルが添付されていないというエラー メッセージがサーバーから返されます。

大きなファイルでも機能するASIHTTPでアップロードを行う場合、アップロードコンポーネントをASIHTTPからNSURLSessionにリファクタリングしています。

これは私の NSURLSession を作成する方法です:

 if ([NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) {
        self.configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:appID];
    } else  {
        self.configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:appID];
    }
    self.configuration.HTTPMaximumConnectionsPerHost = 1;
    self.configuration.discretionary = YES;
    self.configuration.timeoutIntervalForResource = 60*60;
    self.configuration.timeoutIntervalForRequest  = 60*60;
    backgroundSession = [NSURLSession sessionWithConfiguration:self.configuration delegate:self delegateQueue:nil];

したがって、問題は大きなファイルの場合のみであり、小さなファイルの場合はアップロードが実行されます。他の誰かが同じ問題に遭遇しましたか?

4

1 に答える 1