iOS开发之文件上传、下载

因最近项目上提出上传iPhone文件的需求,所以开始探索该方面的实现流程,凭借着直觉,进行了简单的代码探索,没想到真的有UIDocument相关的类,就误打误撞的开始了探索旅程~

下面是简单实现,具体的需要参照项目实际需求进行开发


文件上传

首先需要导入代理,因为我们需要通过回调来获取我们所选取文件的路径<UIDocumentPickerDelegate>

其次就是实现了,直接上代码

 UIDocumentPickerViewController *documentPickerViewController =

//此处为iOS14以前的实现方法,官方建议iOS14之后使用  initForOpeningContentTypes:asCopy: 或 initForOpeningContentTypes: instead 其中的一个方法

 [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.item"] inMode:UIDocumentPickerModeOpen];

    documentPickerViewController.delegate=self;

    [selfpresentViewController:documentPickerViewControlleranimated:YEScompletion:nil];

代理实现获取到的是路径,如需上传则需要将文件转换为二进制上传

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray<NSURL *> *)urls {

    NSData*fileData = [NSDatadataWithContentsOfFile:urls[0]];

    NSLog(@"获取到的文件二进制数据:%@",fileData);

}


文件下载

ios文件下载需要借助系统分享来进行实现,具体代码如下

        NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@""]];

        UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:@[data] applicationActivities:nil];

        [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:avc animated:YES completion:nil ];

        avc.completionWithItemsHandler= ^(UIActivityType__nullableactivityType,BOOLcompleted,NSArray*__nullablereturnedItems,NSError*__nullableactivityError) {

            if(completed ==YES) {

//可根据不同的分享路径断点查看,按需提示即可

                if ([activityType isEqualToString:@"com.apple.DocumentManagerUICore.SaveToFiles"]) {

                    NSLog(@"保存到文件成功");

                }

            }else{


            }

        };

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容