首先下载文件并预览这一过程,需要由下载文件路径,存储路径,预览文件三个步骤来完成。
在赋值文件路径和文件名的时候遇到一些麻烦,一直就打不开这个文件,经过不懈努力,终于找到问题的原因,下面分享出来给大家做参考。
注意一:
这里是从后台获取到的文件路径+文件名,例:/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;
}
网友评论