如何识别文件下载

时间:2014-02-24 10:10:03

标签: ios iphone objective-c uiwebview

我需要使用内部网络浏览器从应用程序内的互联网上下载文件并将其保存到某个自定义路径。 我想我应该使用UIWebViewDelegate并拦截

中的点击次数
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType;

但这是我的问题:如何知道文件何时下载(而不仅仅是其他网页被打开)。 我以为我可以解析链接并确定扩展名是png,doc还是其他东西。但问题是我需要能够下载任何类型的文件。

感谢您的帮助。

更新: 我怎么能认识到这是链接实际上是为了下载。例如。在这种情况下 - > etextlib.ru/Book/DownLoadPDFFile/19036< - 该链接没有可识别的扩展名。

3 个答案:

答案 0 :(得分:0)

在我看来,你只有两种方法可以解决这个问题,而且都涉及实施shouldStartLoadWithRequest

  1. 定义要下载的文件类型,并在分接链接中检查它们。
  2. 在用户对链接进行的任何点击中,请执行以下操作

    • 如果链接是已知文件类型,请下载。
    • 如果链接是网页(htm,html,asp,...),只需打开它
    • 任何其他情况:询问用户是否要将链接下载为文件。

答案 1 :(得分:0)

AFNetworking

创建下载任务

    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]即可查看链接类型并执行您想要的操作