скачать PDF для iPhone

#iphone #pdf #asihttprequest

#iPhone #PDF #asihttprequest

Вопрос:

         -(IBAction)click;
    {

            NSURL *url = [NSURL URLWithString:URL_TO_DOWNLOAD]; 
            NSString *tempDownloadPath = [[self documentsDirectory] 
                                          stringByAppendingPathComponent:@"test.pdf"]; 
            ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
            [request setDownloadDestinationPath:[self documentsDirectory]]; 
            [request setTemporaryFileDownloadPath:tempDownloadPath]; 
            [request setDelegate:self]; 

  [request startAsynchronous]; 


        } 

    - (void)requestFinished:(ASIHTTPRequest *)request 
        { 
            NSLog(@"requestFinished"); 
            NSError *error; 
            NSFileManager *fileManager = [[NSFileManager alloc] init]; 
            NSLog(@"Documents directory: %@", [fileManager 
                                               contentsOfDirectoryAtPath:[self 
                                                                          documentsDirectory] error:amp;error]); 
            NSString *dir = [self documentsDirectory]; 
            NSLog(dir); 
            // NSData *responseData = [request responseData]; 
            NSArray *array = [[NSFileManager defaultManager] 
                              contentsOfDirectoryAtPath:dir error:amp;error]; 
            if (array == nil) { 
                NSLog(@"array == nil"); 
            } 
else
{
[aWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:tempDownloadPath]]];
        [[self view] addSubview:aWebView];  
}

            [fileManager release]; 
                } 

    - (NSString *)documentsDirectory { 
            NSArray *paths = 
            NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                                                NSUserDomainMask, 
                                                YES); 
            return [paths objectAtIndex:0]; 
        } 
  

Мне не удается проверить, существует ли файл, прежде чем загружать его снова щелчком мыши или фактически отображать PDF-файл, запрос которого завершен. Есть какие-либо решения для этого?

Ответ №1:

Чтобы проверить, существует ли файл, используйте:

 BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:file]
  

Чтобы отобразить PDF-файл после завершения запроса, вы можете либо открыть его в UIWebView , либо использовать CGPDF* набор функций для его отображения.

ASIHTTPRequest setDownloadDestinationPath ожидает получения абсолютного пути к файлу, и, похоже, вы просто передаете каталог documents вместо этого. Вы могли бы получить имя файла из своего URL-адреса и добавить его в путь к каталогу documents:

 NSString *filename = [[url absoluteString] lastPathComponent];

NSString *directory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
NSString *destPath = [directory stringByAppendingPathComponent:filename];

[request setDownloadDestinationPath:destPath];
  

Затем, чтобы проверить, существует ли загруженный файл на самом деле, вы можете использовать destPath еще раз.