我正在开发一个 iOS 应用程序,在该应用程序中,我必须在设备上本地下载大数据,例如图像和视频。数据可以以 GB 为单位,并且可以下载数千个文件。那么,解决这种情况的最佳方法是什么。因为它可能有很多失败,比如请求超时等。
此外,如果文件已成功下载,我还必须更新核心数据。
任何最好和简单的方法将不胜感激。
尝试查看 AFNetworking 框架,它可以为您处理几乎所有内容,并且可能比您可以实现的速度更快。
还可以使用 GCD 在后台线程上进行下载。我在下载 50Mb 文件时取得了不错的成绩。
您可以为此使用 AFNetworking。它是当今处理 Web 服务的最佳 API。您可以从 github 下载适用于 iOS 的最新 AFNetworking API。
您可以使用
- (void)uploadImageAtUrl:(NSURL*)url
{
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"yourImg.jpg"], 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:imageData name:@"yourImg" fileName:@"yourImg.jpg" mimeType:@"image/jpeg"];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
//Check progress
NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[httpClient enqueueHTTPRequestOperation:operation];
}