IOS下载查看PDF文件(有下载进度)
IOS(object-c) 下载查看 PDF 其实还是蛮容易操作的。在下载前,首先要把 IOS 可以保存文件的目录给过一遍:
IOS 文件保存目录
IOS 可以自定义写入的文件目录,是很有限的,只能是这3个目录:
1. NSDocumentDirectory
下载文件到该目录,则该文档可以用 iTunes 直接查看。对于安全性不高,便于浏览的文件,pdf ,可以考虑下载到该目录。、
2. NSLibraryDirectory
下载文件到该目录,则该文档不可用 iTunes 直接查看。只能在 APP 内部查看,对于文件有安全性方面的考虑,可以下载到该 目录。
3.NSCachesDirectory
该目录存放的主要是缓存文件,如 图片的缓存数据等。不适合存放永久性的文件。
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发地址:IOS下载查看PDF文件(有下载进度) - http://www.cnblogs.com/xunziji/p/3242843.html
IOS 下载 pdf 文件
在 IOS 开发过程中一直使用的都是 AFNetworking( https://github.com/AFNetworking/AFNetworking) 负责的网络通信,并且 这个开源的组件很稳定,也很易用,同时使用的人也是蛮多的,网上各种解决方案都很好找。这次下载也是用的 这个组件。
//设置下载文件保存的目录
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString* _filePath = [paths objectAtIndex:]; //File Url
NSString* fileUrl = @"http://.../...pdf"; //Encode Url 如果Url 中含有空格,一定要先 Encode
fileUrl = [fileUrl stringByReplacingOccurrencesOfString:@" " withString:@"%20"]]; //创建 Request
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:fileUrl]];
NSString* fileName = @"down_form.pdf";
NSString* filePath = [_filePath stringByAppendingPathComponent:fileName]; //下载进行中的事件
AFURLConnectionOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO]; [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
//下载的进度,如 0.53,就是 53%
float progress = (float)totalBytesRead / totalBytesExpectedToRead; //下载完成
//该方法会在下载完成后立即执行
if (progress == 1.0) {
[downloadsTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}]; //下载完成的事件
//该方法会在下载完成后 延迟 2秒左右执行
//根据完成后需要处理的及时性不高,可以采用该方法
[operation setCompletionBlock:^{ }]; [operation start];
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发地址:IOS下载查看PDF文件(有下载进度) - http://www.cnblogs.com/xunziji/p/3242843.html
查看 PDF 文件
IOS 下查看 PDF 文件的方法是蛮多的,但是 WebView 最简单便捷,虽然不是最强大的。
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString* filePath = [paths objectAtIndex:]; NSString* fileName = @"down_form.pdf";
NSString *path = [filePath stringByAppendingPathComponent:fileName];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
if (fileExists) {
path = [Util urlEncodeString:path];
NSURL* url = [[NSURL alloc]initWithString:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发地址:IOS下载查看PDF文件(有下载进度) - http://www.cnblogs.com/xunziji/p/3242843.html
IOS下载查看PDF文件(有下载进度)的更多相关文章
- 在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all
在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all 前天来了个新需求, 有一个授权书的文件要点击下载, 需要在前端生成, ...
- 【转载】Chrome 0day漏洞:不要用Chrome查看pdf文件
英文原文地址:https://blog.edgespot.io/2019/02/edgespot-detects-pdf-zero-day-samples.html 中文原文地址:https://ww ...
- Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢?
参考出处: http://www.imooc.com/qadetail/76393 Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢? 背景介绍: 文件名 为英文时可以下载 ...
- 用apache做为代理下载本地pdf文件
有一些公司会用apache做为代理,下载服务器上的pdf文件.以下是apache做为代理的配置 一. 环境 centos6.5 192.168.69.3 二. yum安装apache 服务 [zxj ...
- MyEclipse下直接查看class文件 jadnt158下载
在没有源文件的情况下,通过倒入两个jar文件就可以实现 文件链接:http://pan.baidu.com/share/link?shareid=372924537&uk=2435113113 ...
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
SQL 横转竖 .竖专横 (转载) 普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 ...
- C# 生成pdf文件客户端下载
itextsharp.dll 下载:http://sourceforge.net/projects/itextsharp/ 程序需引用:itextsharp.dll,itextsharp.pdfa.d ...
- WPF中查看PDF文件之MoonPdfLib类库
最近研究了两种PDF文件查看器,MoonPdfLib或者AdobeReader. 今天先说第一种,在网上扒到的很好的WPF中用MoonPdf类库来展示PDF文件. 在Sourceforge上下载到Mo ...
- 浏览器在线查看pdf文件 pdf.js的使用教程
谷歌浏览器可以直接在线查看pdf,而IE内核浏览器无法在线查看,默认是下载. 这里用到的是pdf.js,不仅支持IE内核浏览器,而且兼容手机查看pdf 官网地址:http://mozilla.gith ...
随机推荐
- [VijosP1764]Dual Matrices 题解
题目大意: 一个N行M列的二维矩阵,矩阵的每个位置上是一个绝对值不超过1000的整数.你需要找到两个不相交的A*B的连续子矩形,使得这两个矩形包含的元素之和尽量大. 思路: 预处理,n2时间算出每个点 ...
- swift-string(字符串的一些语法)
1 isEmpty 返回一个布尔值,确定该字符串是否为空 2 hasPrefix(prefix: String) 函数检查给定的参数字符串是否以 string 为前缀 3 hasSuffix(suff ...
- C# base64 Img 互转
[AcceptVerbs(HttpVerbs.Post)] public JsonResult Upload(HttpPostedFileBase fileData) { try { if (file ...
- Android面试技巧 找安卓开发工作同学可以看看!
马上就要学完安卓毕业了,最近总想写点什么.今天把自己这段时间的学习心得以及面试时的经验分享给大家: 关于我为什么选择学习安卓并且来华清远见学习,说来话长,但是我要长话短说!首先我以前的实习工作工资太低 ...
- OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
1.先把OC的类分清楚各有什么方法 普通类的方法 init initialize: 控制器类的方法 init initialize: initWithCoder: UI控件类的方法 init init ...
- set 集合容器实现元素的插入与中序排序
创建set 对象,方法类似于 vector set< int > s ; 初始化: set<int>s; s.insert(); s.insert(); s.insert(); ...
- 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串 实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来 ...
- Visual Studio 2013 Web开发
cnbeta新闻:微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Ser ...
- 【安装PHP】如何在openSUSE42.1下编译安装PHP7
首先推荐一篇文章PHP 7 Release Date Arrived: Will Developers Adopt PHP 7? - PHP Classes blog. 里面说到是否会去使用PHP7, ...
- SQL Server 执行计划缓存
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储,这也是写这篇文章的目的,在了解执行计划之 ...