zoukankan      html  css  js  c++  java
  • 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:0];
    
    //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:0];
    
    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
  • 相关阅读:
    vsftpd配置再次冲击Ubuntu之server篇
    update关联其他表批量更新数据
    丁丁的成长7
    Winform中使用PictureBox显示及修改数据库中的照片
    Apache HTTP Server 与 Tomcat 的三种连接方式
    丁丁的成长5
    tomcat的自动启动再次冲击Ubuntu之server篇
    再严重的感冒,马上就好【转】
    基本配置2被忽悠进了CentOS 6
    丁丁的成长6
  • 原文地址:https://www.cnblogs.com/xunziji/p/3242843.html
Copyright © 2011-2022 走看看