美文网首页
iOS文件下载 存储在手机文件夹浏览

iOS文件下载 存储在手机文件夹浏览

作者: 仰望远处 | 来源:发表于2021-12-08 18:46 被阅读0次

产品需求 实现PDF文件下载既能在线浏览 又能从手机的文件夹打开。

首先实现在线浏览有很多方法。如 自定义VC 与view实现 或者  UIWebView / WKWebView 或者利用系统自带的UIDocumentPickerViewController  都可以实现,但是要实现在手机的文件里打开,这个是第一次遇到,之前没有做过这方面的需求,于是有了调研。

 首先想到的是 给用户文件下载的URL 在Safari操作。这是基于iPhone手机本身的机制。但显然这是不满足产品需求的,于是查资料,看到了系统自带的UIDocumentInteractionController

UIDocumentInteractionController 

 主要作用

1).预览类似pdf、doc、ppt等类型文件的类。

2).可以将用户接收到的文件分享到用户手机上的其他App中。

使用方法

```

@property (nonatomic, strong) UIDocumentInteractionController *DIController;

1)签代理 UIDocumentInteractionControllerDelegate

2)初始化 

NSString*load_url = @""; //下载完成后的URL

 self.DIController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL URLWithString:load_url]];

  self.DIController.delegate=self;

   [self.DIController presentPreviewAnimated:YES];

3)实现代理方法

#pragma mark - UIDocumentInteractionControllerDelegate

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {

    return self.downloadVC;

}

- (UIView*)documentInteractionControllerViewForPreview:(UIDocumentInteractionController*)controller {

    return self.downloadVC.view;

}

- (CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController*)controller {

    return self.downloadVC.view.frame;

}

```

下载文件的方法

#pragma mark- 下载文件

```

-(NSURLSessionTask *)downloadWithURL:(NSString *)URL

                             fileDir:(NSString*)fileDir

                            progress:(void(^)(NSProgress*progress))progress

                             success:(void(^)(NSString*filePath))success

                             failure:(void(^)(NSError*error))failure{

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URL]];

    NSURLSessionDownloadTask*downloadTask = [managerdownloadTaskWithRequest:requestprogress:^(NSProgress*_NonnulldownloadProgress) {

        //下载进度

        progress ? progress(downloadProgress) :nil;

        TSLog(@"下载进度:%.2f%%",100.0*downloadProgress.completedUnitCount/downloadProgress.totalUnitCount);

    }destination:^NSURL*_Nonnull(NSURL*_NonnulltargetPath,NSURLResponse*_Nonnullresponse) {

        //拼接缓存目录

        NSString *downloadStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] ;

        //拼接文件路径

        NSString*filePath = [downloadStrstringByAppendingPathComponent:fileDir];

        return[NSURLfileURLWithPath:filePath];

    }completionHandler:^(NSURLResponse*_Nonnullresponse,NSURL*_NullablefilePath,NSError*_Nullableerror) {

        success&&filePath ? success(filePath.absoluteString/** NSURL->NSString*/) :nil;

        failure && error ? failure(error) :nil;

    }];

    //开始下载

    [downloadTaskresume];

    returndownloadTask;

}

```

此时就完成PDF文件下载完后预览 如下图 

点击右上角的按钮会弹出如下图的弹框 点击save to files  就可以把下载好的文件存储到手机的文件夹里

当然这只是一个 大概的实现过程,其中有些细节可以根据产品需求来完善。如下载的名称  存储在文件夹里可以归类等等

相关文章

  • iOS文件下载 存储在手机文件夹浏览

    产品需求 实现PDF文件下载既能在线浏览 又能从手机的文件夹打开。 首先实现在线浏览有很多方法。如 自定义VC 与...

  • Swift&OC 文件夹和文件的详细操作

    在iOS开发我们会遇到文件、音频、视频等等下载后本地存储的情况,这时对读文件,写文件就显得很重要,对文件夹以及文件...

  • 60-iOS本地(沙盒)存储

    一、存储的地方介绍 iOS 本地存储主要存储在沙盒中,那么何为沙盒?沙盒其实就是一个文件夹。这些文件夹主要用来存放...

  • iOS_网络请求_NSURLSession_使用

    1.Tips: 发布版本 -> iOS7支持HTTP 2.0下载时直接将下载的文件存储到沙盒内的tmp文件夹(要保...

  • iPhone如何给手机上的PDF文件重命名

    首先,我们将PDF文件保存到 手机的“文件夹” 然后我们在手机的“文件夹”中找到刚才存储的文件 之后在文件中找到刚...

  • iOS 文件下载 存储到指定文件夹

    服务端给文件的下载链接, 最好给一个唯一的id用来区别文件是否重复, 看是否需要这样的功能, 利用AFN api ...

  • Mac

    Safari下载的文件在哪找到? Safari下载的文件一般会默认存储在硬盘的「下载」文件夹中,大家只需要打开访达...

  • java+selenium3笔记01——调用 Firefox、C

    准备浏览器驱动 例如,在D盘下新建文件夹BrowserDriver,然后将下载好的浏览器驱动统一放在该文件夹下管理...

  • 整理从TCGA下载的数据

    如果从TCGA官网网页下载数据,或者使用gdc-client工具下载的数据,都是以单个的文件夹形式存储,并且文件夹...

  • 全网视频下载

    史上最全的视频下载方案 如何利用谷歌浏览器的开发者工具下载很多个.ts文件? 批量下载ts视频文件在文件夹下,sh...

网友评论

      本文标题:iOS文件下载 存储在手机文件夹浏览

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