一、使用说明

采用第三方下载插件MCDownloadManager,

csdn地址   http://download.csdn.net/download/wangxiaoertedaye/10166107

github地址  https://github.com/zxgiOS/MCDownloadManager

两种实现方式

1)分步式,点击下载然后点击打开,可以使用按钮点击下载、查看,

2)一体式,点击直接下载打开,点击之后将URL传入插件调用

MCDownloadReceipt *receipt = [[MCDownloadManager defaultInstance] downloadReceiptForURL:self.url];

根据receipt.state判断是否下载或者直接打开,如果返回已下载就直接调用下述打开方法,未下载则调用下载方法下载完成后打开

二、效果图

三、使用方法

1.设置下载URL,设置进度条
    MCDownloadReceipt *receipt = [[MCDownloadManager defaultInstance] downloadReceiptForURL:url];
    self.progressView.progress = receipt.progress.fractionCompleted;
2.点击开始下载,download中监听下载进度更新进度条
    - (void)downloadBtnAction:(UIButton *)sender{
    
    MCDownloadReceipt *receipt = [[MCDownloadManager defaultInstance] downloadReceiptForURL:self.url];
    
    if (receipt.state == MCDownloadStateDownloading) {//当前正在下载中
        [sender setTitle:@"下载" forState:UIControlStateNormal];
        [[MCDownloadManager defaultInstance] suspendWithDownloadReceipt:receipt];
    }else if (receipt.state == MCDownloadStateCompleted) {//已下载
        
        if ([self.delegate respondsToSelector:@selector(cell:didClickedBtn:)]) {
            [self.delegate cell:self didClickedBtn:sender];
        }
    }else {//未下载
        [sender setTitle:@"停止" forState:UIControlStateNormal];
        [self download];
    }

}
- (void)download {
    [[MCDownloadManager defaultInstance] downloadFileWithURL:self.url
                                                    progress:^(NSProgress * _Nonnull downloadProgress, MCDownloadReceipt *receipt) {
                                                        NSLog(@"%@,%@",receipt.url,self.url);
                                                        if ([receipt.url isEqualToString:self.url]) {
                                                            self.progressView.progress = downloadProgress.fractionCompleted ;
                                                            self.sizeLabel.text = [NSString stringWithFormat:@"%0.2fm/%0.2fm", downloadProgress.completedUnitCount/1024.0/1024, downloadProgress.totalUnitCount/1024.0/1024];
                                                        }
                                                        
                                                    }
                                                 destination:nil
                                                     success:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, NSURL * _Nonnull filePath) {
                                                         [self.downloadBtn setTitle:@"查看" forState:UIControlStateNormal];
                                                     }
                                                     failure:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse * _Nullable response, NSError * _Nonnull error) {
                                                         [self.downloadBtn setTitle:@"下载" forState:UIControlStateNormal];
                                                     }];
    
}
3.下载完成查看  传入需要查看文件的URL 插件自动关联已经下载好的(相当于缓存机制,避免重复下载)如果需要下载之后直接打开则在上述download方法下载完成中调用打开方法

- (void)openDocBycell:(DownLoadTableViewCell *)cell{
    
    MCDownloadReceipt *receipt = [[MCDownloadManager defaultInstance] downloadReceiptForURL:cell.url];
    //UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController;
    self.doc = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:receipt.filePath]];
    
    self.doc.name = @"文档预览";
    self.doc.accessibilityNavigationStyle = 2;
    self.doc.delegate = self;
    [self.doc presentPreviewAnimated:YES];
    //[documentVC openFileWithURL:[NSURL fileURLWithPath:receipt.filePath]];
}

iOS好使的各种文件文档、音乐、视频下载查看器有进度条相关推荐

  1. Win10如何删除资源管理器中的图片/文档/音乐/视频等文件夹?

    Win10如何删除资源管理器中的图片/文档/音乐/视频等文件夹? 使用Win10系统的过程中,打开"此电脑",在资源管理器上面会有图片/文档/音乐/视频等6个文件夹,相信绝大数的用 ...

  2. word文档封面免费下载_为Word 2007文档添加封面

    word文档封面免费下载 I've been using Microsoft Word since 1985, starting with Word for Mac and eventually mo ...

  3. 在IOS中实现导入导出文档

    导入&导出文档时IOS开发者经常面临的开发需求.例如你开发一个文档阅读器允许用户导入他的文档到你的应用中以便离线阅读.又如,你的阅读器可以导出文档以便其他应用使用. 这篇文章,将介绍各种IOS ...

  4. (译) 在IOS中实现导入导出文档

    导入&导出文档时IOS开发者经常面临的开发需求.例如你开发一个文档阅读器允许用户导入他的文档到你的应用中以便离线阅读.又如,你的阅读器可以导出文档以便其他应用使用.       这篇文章,将介 ...

  5. html文件元素体,文档表示HTML文件,文档中的______________被称为元素

    摘要: 文档文件文档为元须要性买造必家支义工由国一次本主笔补对资的改断偿金付一商业.文档文件文档为元虎克最初0倍微镜列文的显的放大倍发明数是.表示被)提中心由(论是地理出的.... 文档文件文档为元须 ...

  6. 【githubshare】开源的文件文档在线预览项目,支持主流办公文档的在线预览,如 doc、docx、Excel、pdf、txt、zip、rar、 图片等

    GitHub 上一份硬核计算机科学 CS 自学计划,偏向软件工程和系统架构方向. 旨在帮助开发者制定一个为期 3-5 年的重学 CS 目标,夯实 CS 基本功,达到美国一流大学 CS 专业本科毕业水平 ...

  7. 在线文件/文档预览/分页分片预览 之开源kkfileview(word转pdf,pdf截取,pdf转图片,Aspose jobConverter , OpenOffice ,libreoffice )

    前提说明 浏览器不能直接浏览word文件,但可以浏览pdf文件!!! 可以后台把word,excel 转成成pdf.然后给前端预览: 业界常用的开源工具有:Aspose jobConverter ,  ...

  8. 推荐一款文件文档在线预览解决方案

    真正的大师,永远都怀着一颗学徒的心! 今天给大家推荐一款文件文档在线预览解决方案.同学们,我们在开发的过程中,对于一些管理系统肯定有文档在线预览的需求.对于简单的文档,用谷歌的在线文档可以直接处理.但 ...

  9. html文档也称为,文档表示HTML文件,文档中的______________被称为元素

    摘要: 文档文件文档为元下列中正有(确的说法,文档文件文档为元和更换损坏部及时维修分,划.骤地增设有计有步,应定养安全期保道路设施,或没公路有设不全设施施的.证既属于一次凭,表示被专用凭证也是.... ...

最新文章

  1. 绩效面谈流程,阿里是这样做的
  2. Windows 编程[5] - 学习窗体生成的过程五
  3. 一、Nginx常见问题
  4. wav音量和分贝转换关系_电吉他音箱瓦数与音量大小之间的关系
  5. Silverlight C# 游戏开发:面向对象在游戏中的实例(一)
  6. java语音播报案例
  7. windos手工扩展分区
  8. 通过“FBI树”复习二叉树算法(洛谷P1087题题解,Java语言描述)
  9. Nodejs线上日志部署
  10. 李飞飞点赞!,刚刚公布了第一批数据集benchmark入围名单
  11. python类的数组属性_python3库numpy数组属性的查看方法
  12. Java测试新手_测试新手的一些经验
  13. 数学:概率论与数理统计
  14. css字体浏览(转)
  15. 公司电脑企业微信连接不上服务器,企业微信登不上原因是什么?官方回应:服务器升级的锅!...
  16. doctrine2 mysql_doctrine2到底是个什么玩意
  17. #12304;#28404;#28404;#37329;#34701;#23458;#26381;#30005;#35805;#12305;
  18. Python数据处理016:Pandas 导入导出
  19. [转]Unity 打包快手
  20. Python 自动化办公

热门文章

  1. EMC一些常见问题(面试也会稍微提及)
  2. python获取汉字拼音查询翻译器_Python 返回汉字的汉语拼音
  3. 搭建私人 云笔记+ ftp + joplin
  4. 当zookeeper报错Invalid config, exiting abnormally,Error contacting service. It is probably not running
  5. 数据分析的求职前景,你关心的问题都在这!
  6. 我和我的小伙伴都想知道的MySQL知識(1)----安裝MySQL需要知道的瞭解的版本型號
  7. 龙芯俱乐部邀请参加“2008开源中国开源世界”高峰论坛
  8. 类型转换异常,父类不能强转换成子类
  9. 中文语音预训练模型:Wav2vec 2.0、HuBERT
  10. Elasticsearch 5.0 简介(medcl微信直播实录)