【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?
需求
缓存文件就不再细说,在/Library/Caches 目次下面新建一个文件夹Video用来缓存视频文件。之前看到用的文┞仿存到了Documents文件夹下,我是不建议的,之所以在这个目次下面,是因为体系不会清理这个文件夹,并且在进行iCloud备份时也不会备份该文件夹下的内容。如不雅把一个很大年夜的视频文件放到Documents文件夹下,必定给用户带来不便。还有一点须要留意,正如膳绫擎所描述,上传完成、删除正在上传文件、清空上传列表都必须将本地缓存的文件删除。不然会导致app占用体系太多的空间,用户看到后直接把你的app卸载了。
项目开辟中,有时刻我们须要将本地的文件上传到办事器,简单的几张图片还好,然则针对iPhone琅绫擎的视频文件进行上传,为了用户体验,我们有须要实现断点上传。其实也不是真的断点,这里我们只是模仿断点机制。
既然须要上传文件,那最好要有一个上传列表界面,方面用户对上传中的文件进行及时治理。这里我简单搭建了一个上传列表界面,如下图:

该界面实现的功能:左滑删除,单击暂停、撤消,清空列表。退出该界面可后台上传,暂停再次开端或则app被kill掉落依旧支撑续传。上传完成、删除正在上传文件、清空上传列表都邑将本地缓存的文件删除。
实现办法
客户端把大年夜文件切片,办事器接收完所有片后拼接成一个完全文件。
1.缓存文件
录制视频或者选择体系相册中的视频后须要写入文件到沙盒。因为如不雅不缓存,只是经由过程路径来获取视频棘手机中的视频可能被删除。如不雅是选择体系自带紧缩的话,文件只是存在了体系的某个cache文件夹下,体系可能会清理该文件件,那么下次再次根据路径获取视频的时刻,就找不到了。
为了防止有名,我在文件名中拼上了时光戳。
- #pragma mark- write cache file
- - (NSString *)writeToCacheVideo:(NSData *)data appendNameString:(NSString *)name {
- NSString *cachesDirectory = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject;
- NSString *createPath = [cachesDirectory stringByAppendingPathComponent:@"video"];
- NSFileManager *fileManager = [[NSFileManager alloc] init];
- [fileManager createDirectoryAtPath:createPath withIntermediateDirectories:YES attributes:nil error:nil];
- NSString *path = [cachesDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"/video/%.0f%@",[NSDate date].timeIntervalSince1970,name]];
- [data writeToFile:path atomically:NO];
- return path;
- }
这里随便说下沙盒目次下几个文件夹的感化。
- Documents:Only documents and other data that is user-generated, or that cannot otherwise be recreated by your application, should be stored in the/Documents directory and will be automatically backed up by iCloud. //用户生成的数据,法度榜样弗成从新生成的数据,会经由过程iCloud备份
- Library:Data that can be downloaded again or regenerated should be stored in the/Library/Caches directory. Examples of files you should put in the Caches directory include database cache files and downloadable content, such as that used by magazine, newspaper, and map applications. // 可被下载的数据
- tmp: Data that is used>
- // model.filePath 文件路径
- NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:model.filePath];
- // 移动文件指针
- // kSuperUploadBlockSize 上传切片大年夜小 这里是1M, i指已上传片数(i = model.uploadedCount)
- [handle seekToFileOffset:kSuperUploadBlockSize * i];
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?背景介绍本项目重要解决 check 和 opinion2 张汗青数据表(汗青数据是指当营业产生过程中的完全中心流程和结不雅数据)的在>>>详细阅读
本文标题:iOS模仿断点机制上传文件实现方法
地址:http://www.17bianji.com/lsqh/39995.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示