IOS webview在线预览文件图片等

来源:互联网 发布:网络通则 编辑:程序博客网 时间:2024/05/22 06:42

亲测可以打开word文档(doc docx,ppt pptx,pdf等)图片等。

在h头文件中引用和声明文件地址:

#import <QuickLook/QuickLook.h>@property (nonatomic, retain)NSString *fileURLString;

在c文件中声明delegate:

<UIWebViewDelegate,QLPreviewControllerDataSource,QLPreviewControllerDelegate>

UIWebView *openFileWebView;

打开文件方法:

self.fileURLString = @“文件url地址”;        openFileWebView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 64, self.view.frame.size.width, self.view.frame.size.height)];        openFileWebView.delegate = self;        [openFileWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.fileURLString]]];

代理方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{            return YES;}#pragma mark - Web代理- (void)webViewDidFinishLoad:(UIWebView *)webView{    NSURL *targetURL = [NSURL URLWithString:self.fileURLString];        NSString *docPath = [self documentsDirectoryPath];    NSString *pathToDownloadTo = [NSString stringWithFormat:@"%@/%@", docPath, [targetURL lastPathComponent]];    NSFileManager *fileManager = [NSFileManager defaultManager];    BOOL hasDownLoad= [fileManager fileExistsAtPath:pathToDownloadTo];    if (hasDownLoad) {        self.fileURL = [NSURL fileURLWithPath:pathToDownloadTo];        QLPreviewController *qlVC = [[QLPreviewController alloc]init];        qlVC.delegate = self;        qlVC.dataSource = self;        [self.navigationController pushViewController:qlVC animated:YES];        //    }    else {        NSURL *targetURL = [NSURL URLWithString:self.fileURLString];                NSData *fileData = [[NSData alloc] initWithContentsOfURL:targetURL];        // Get the path to the App's Documents directory        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);        NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder        [fileData writeToFile:[NSString stringWithFormat:@"%@/%@", documentsDirectory, [targetURL lastPathComponent]] atomically:YES];        NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];        [openFileWebView loadRequest:request];    }        NSLog(@"webViewDidFinishLoad");}- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{    NSLog(@"didFailLoadWithError");        }- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {    return 1;}- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {    return self.fileURL;}- (void)previewControllerWillDismiss:(QLPreviewController *)controller {    NSLog(@"previewControllerWillDismiss");}- (void)previewControllerDidDismiss:(QLPreviewController *)controller {    NSLog(@"previewControllerDidDismiss");}- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item{    return YES;}- (CGRect)previewController:(QLPreviewController *)controller frameForPreviewItem:(id <QLPreviewItem>)item inSourceView:(UIView * __nullable * __nonnull)view{    return CGRectZero;}- (NSString *)documentsDirectoryPath {    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *documentsDirectoryPath = [paths objectAtIndex:0];    return documentsDirectoryPath;}


0 0
原创粉丝点击