我正从服务器下载文件 我能够成功下载文件。 但每当我取消下载请求(中间)操作并重新开始下载。 下载从先前的进度开始(而不是从零开始)。 但我想从零开始重新下载。
设置operation.deleteTempFileOnCancel = YES;
也没有帮助
当我在
之间取消下载时,在给定的目标路径上没有创建文件operation.tempPath is returning null (not able to delete temporary file)
我正在使用以下代码
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:model.downloadUrl]];
operation = [[AFDownloadRequestOperation alloc] initWithRequest:request targetPath:path shouldResume:YES];
operation.deleteTempFileOnCancel = YES;
// download operation progressive block
[operation setProgressiveDownloadProgressBlock:^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile)
{
// calculate current download progress
}
}];
// download operation completion block
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// operation failed
}];
[operation start];
如果在中间取消下载然后再次启动,我想从零开始下载。我正在使用iOS 7
答案 0 :(得分:1)
我刚刚找到了解决方法。我会在这里发布,以防其他人遇到同样的问题。
在此行之后,您可以检查是否实际创建了tempPath
operation = [[AFDownloadRequestOperation alloc] initWithRequest:request targetPath:path shouldResume:YES];
NSLog("%@", operation.tempPath);
然后将该路径添加到字典
NSString *tempPath = _operation.tempPath;
[self.tempPathDict setObject:tempPath forKey:your_key];
当您停止操作时,请调用此代码
NSString *tempPath = [self.tempPathDict objectForKey:your_key];
// Cancel the operation you want
[operation cancel];
// Remove the tempFile
NSError *error = [[NSError alloc] init];
[[NSFileManager defaultManager] removeItemAtPath:tempPath error:&error];
// And last remove the path from the dictionary
[self.tempPathDict removeObjectForKey:your_key];