#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
еще раз.