0

次のコードを使用して、AFNetworking でファイルをダウンロードしています。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:downloadFileUrl]];

AFHTTPRequestOperation * operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentDirectory = [paths objectAtIndex:0];

NSString * targetFileName = [downloadFileUrl lastPathComponent];
NSString * targetPath = [documentDirectory stringByAppendingPathComponent:targetFileName];

operation.outputStream = [NSOutputStream outputStreamToFileAtPath:targetPath append:NO];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadDidSuccessNotification" object:nil];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadDidFailedNotification" object:nil];

}];

[operation start];

ダウンロードをキャンセルするオプションをユーザーに提供します。これは次のように行います。

[operation cancel];

ただし、未完成のダウンロード ファイルはディレクトリに残ります。未完成のダウンロードファイルを削除する解決策を教えてください。

4

2 に答える 2

3

このコードを試してください。私はチェックしませんでした。

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    [[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadDidSuccessNotification" object:nil];

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
      NSFileManager *fileMgr = [NSFileManager defaultManager] ;
      NSError *error = nil;
     BOOL removeSuccess = [fileMgr removeItemAtPath:targetPath error:&error];
        if (!removeSuccess) {
            // Error handling
            ...
        }
    [[NSNotificationCenter defaultCenter] postNotificationName:@"DownloadDidFailedNotification" object:nil];

}];
于 2013-12-11T06:26:45.117 に答える
2

これを試してファイルを削除してください -

NSArray *searchPaths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentFolderPath = [searchPaths objectAtIndex:0];
BOOL success=[[NSFileManager defaultManager] fileExistsAtPath: targetPath];
 if (success)
 {
      BOOL deletedFile = [[NSFileManager defaultManager] removeItemAtPath: targetPath error:&error];
     if (deletedFile)
        NSLog(@"File deleted");
     else
        NSLog(@"Not able to delete File");
}
于 2013-12-11T06:26:16.380 に答える