Alex Stelea
Alex Stelea

Reputation: 1219

iphone pdf download

        -(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:&error]); 
            NSString *dir = [self documentsDirectory]; 
            NSLog(dir); 
            // NSData *responseData = [request responseData]; 
            NSArray *array = [[NSFileManager defaultManager] 
                              contentsOfDirectoryAtPath:dir error:&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]; 
        } 

I cant manage to check if the file exists before downloading again with an click, or actually displaying the pdf one the request has finished. Any solutions to this ?

Upvotes: 0

Views: 3710

Answers (1)

ySgPjx
ySgPjx

Reputation: 10265

To check if the file exists, use:

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

To display the PDF once the request has finished, you can either open it in a UIWebView or use the CGPDF* set of functions to render it.

ASIHTTPRequest's setDownloadDestinationPath expects to receive an absolute file path, and it seems you're just passing the documents directory instead. You could get the filename from your URL and append it to the documents directory path:

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

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

[request setDownloadDestinationPath:destPath];

Then to check if the downloaded file actually exists, you can use destPath again.

Upvotes: 2

Related Questions