Je veux télécharger plusieurs fichiers à partir d'un tableau d'URL à partir du serveur un par un.Télécharger plusieurs fichiers en utilisant NSURLSession
J'ai besoin de montrer la progression de chaque fichier de téléchargement, où l'utilisateur peut également l'annuler.
ViewControllerh:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UIView *vw_download;
IBOutlet UILabel *lbl_BookTitle;
IBOutlet UILabel *lbl_BookDes;
IBOutlet UILabel *lbl_downloadStatus;
IBOutlet UIImageView *img_todownload;
IBOutlet UIProgressView *vw_downloadbar;
IBOutlet UIButton *btn_stopDownload;
}
-(IBAction)btn_stopDownloading:(id)sender;
@end
ViewController.m:
#import "ViewController.h"
@interface ViewController()<NSURLSessionDelegate> {
NSMutableArray *downloadLinksArray;
NSURLSession *session ;
NSURLSessionDownloadTask *task;
}
@end
@implementation ViewController
- (void)viewDidLoad {
downloadLinksArray=[[NSMutableArray alloc]initWithObjects:@"URL1",@"URL2", @"URL3", @"URL4", nil];
[vw_downloadbar setProgress:0];
lbl_downloadStatus.text=[NSString stringWithFormat:@"Downloading in Progress"];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(IBAction)startDownload:(id)sender {
//[self startChapterDownLoad];
for (int i=0;i< [downloadLinksArray count];i++) {
NSURL *Url= [NSURL URLWithString:[NSString stringWithFormat:@"%@",[downloadLinksArray objectAtIndex:i]]];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:[NSOperationQueue mainQueue]];
NSURLRequest* request = [NSURLRequest requestWithURL:Url];
task = [session downloadTaskWithRequest:request];
[task resume];
}
}
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {
CGFloat percentDone = (double)totalBytesWritten/(double)totalBytesExpectedToWrite;
// Notify user.
[self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:percentDone] waitUntilDone:NO];
}
- (void) updateProgress:(NSNumber *)percent {
[vw_downloadbar setProgress:percent.floatValue];
}
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
// Either move the data from the location to a permanent location, or do something with the data at that location.
}
-(IBAction)btn_stopDownloading:(id)sender {
[task cancel];
[vw_downloadbar setProgress:0];
}
Ok, alors quel est le problème, vous n'avez pas saisi de question? –
Les modérateurs ne peuvent corriger que les fautes de frappe et les erreurs liées à la syntaxe. #keep_calm –