美文网首页
iOS下载word等文件并预览

iOS下载word等文件并预览

作者: 肉肉要次肉 | 来源:发表于2017-11-22 17:57 被阅读30次

    首先下载文件并预览这一过程,需要由下载文件路径,存储路径,预览文件三个步骤来完成。

    在赋值文件路径和文件名的时候遇到一些麻烦,一直就打不开这个文件,经过不懈努力,终于找到问题的原因,下面分享出来给大家做参考。

    注意一:

    这里是从后台获取到的文件路径+文件名,例:/upload/notice/201708/哈哈哈.doc

    注意二:

    这里需要的是文件名,这个文件名可以是后台上传的文件名,也可以自己随便起一个名字,但这里的文件名涉及到预览文件时显示的标题,也就是说,这里起什么名字,在预览文件的时候标题就是什么。

    注意三:

    这里我做了一个根据文件名判断文件是否存在的if...else语句。如果文件存在,直接调用预览文件的方法即可。

    注意四:

    如果文件不存在,则调用下载文件的方法,

    docPath:这个参数这里是本地路径,也就是代码最开始的两句。

    fileName:这个参数这里是获取后台给上传文件的那个文件名。

    注意五:

    这里就是需要将下载文件的地址拼接完整

    urlString = [urlString stringByAppendingString:@""];

    这里@"",可以填写文件名,根据自身需要结合后台获取的文件路径拼接而定,我这里的文件名在上一句代码中拼接完成,这里就不需要再填写文件名,以免造成下载路径不对。

    注意六:

    这里的docPath 和 fileName跟注意四一致,调用的时候赋值

    注意七:

    这里是下载完成的路径

    注意八:

    我这里用到的预览文件方法是UIDocumentInteractionContorller,

    需要签订UIDocumentInteractionControllerDelegate

    设置UIDocumentInteractionController代理,添加代理方法.

    补充:预览文件实现方法

    我这里使用的是UIDocumentInteractionController,还可以使用QuickLook或者webView打开文件

    1、UIDocumentInteractionController 和 QuickLook 不能在线预览,只能加载本地文件。

    2、QLPreviewController可以一起浏览多个文件,而UIDocumentInteractionController一次只能浏览一个文件。

    3、使用QLPreviewController时,需要导入QuickLook.framework,并遵守其数据源和代理方法。

    webView预览文件方法:


    NSString *filePath = @"";//文件存储地址

    NSURL *url = [NSURL fileURLWithPath:filePath];

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, kDeviceWidth, kDeviceHeight)];

    [webView loadRequest:[NSURLRequest requestWithURL:url]];


    QuickLook打开文件方法:


    #import "ViewController.h"

    #import

    @interface ViewController ()

    @property (nonatomic,strong) QLPreviewController *previewVC;

    @end

    @implementation ViewController

    - (void)viewDidLoad {

    [super viewDidLoad];

    }

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    self.previewVC = [[QLPreviewController alloc] init];

    self.previewVC.dataSource = self;

    [self presentViewController:self.previewVC animated:YES completion:nil];

    }

    //实现代理协议

    #pragma mark-----------QLPreviewControllerDataSource

    //要显示的文件的数量

    /*!

    * @abstract Returns the number of items that the preview controller should preview.

    * @param controller The Preview Controller.

    * @result The number of items.

    */

    - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{

    return 3;

    }

    - (id )previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index{

    //这个是加载的本地的pdf的文件,doc的同理

    NSString *path;

    switch (index) {

    case 0:

    {

    path = [[NSBundle mainBundle] pathForResource:@"testDoc" ofType:@"docx"];

    }

    break;

    case 1:

    {

    path = [[NSBundle mainBundle] pathForResource:@"testDoc" ofType:@"pages"];

    }

    break;

    case 2:

    {

    path = [[NSBundle mainBundle] pathForResource:@"testDoc" ofType:@"pdf"];

    }

    break;

    default:

    break;

    }

    NSURL *url = [NSURL fileURLWithPath:path];

    return url;

    }

    相关文章

      网友评论

          本文标题:iOS下载word等文件并预览

          本文链接:https://www.haomeiwen.com/subject/ubhovxtx.html