我需要使用内部网络浏览器从应用程序内的互联网上下载文件并将其保存到某个自定义路径。 我想我应该使用UIWebViewDelegate并拦截
中的点击次数- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType;
但这是我的问题:如何知道文件何时下载(而不仅仅是其他网页被打开)。 我以为我可以解析链接并确定扩展名是png,doc还是其他东西。但问题是我需要能够下载任何类型的文件。
感谢您的帮助。
更新: 我怎么能认识到这是链接实际上是为了下载。例如。在这种情况下 - > etextlib.ru/Book/DownLoadPDFFile/19036< - 该链接没有可识别的扩展名。
答案 0 :(得分:0)
在我看来,你只有两种方法可以解决这个问题,而且都涉及实施shouldStartLoadWithRequest
:
在用户对链接进行的任何点击中,请执行以下操作
答案 1 :(得分:0)
创建下载任务
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[NSSearchPathForDirectorie
sInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]];
return [documentsDirectoryPath URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
答案 2 :(得分:0)
只需检查[request.URL.absoluteString pathExtension]
即可查看链接类型并执行您想要的操作