作家
登录

iOS模仿断点机制上传文件实现方法

作者: 来源: 2017-12-20 16:17:40 阅读 我要评论

  • //攫取数据 
  • NSData *blockData = [handle readDataOfLength:kSuperUploadBlockSize]; 
  • 这里我将大年夜文件切成最小1M的小文件来上传。这边应用到一个Model,该数据模型重要存放上传列表中所须要的一些根本数据。因为我们每次上传完一片,须要更新UI。因为这边须要支撑断点续传,是以须要记录文件的进度值,已上传的片数我们须要保存下来。保存上传文件路径和文件进度可以应用数据库或则plist文件等方法,这边须要保存的数据不是很多,所以我直接保存在了偏好设置中。每片文件上传成功,设置该模型已上传片数,并且更新本地文件进度值。

    我们可以大年夜致看下所用到的Model

    YJTUploadManager.h

    1. @implementation YJTDocUploadModel 
    2. // 上传完毕后更新模型相干数据 
    3. - (void)setUploadedCount:(NSInteger)uploadedCount { 
    4.      
    5.     _uploadedCount = uploadedCount; 
    6.      
    7.     self.uploadPercent = (CGFloat)uploadedCount / self.totalCount; 
    8.     self.progressLableText = [NSString stringWithFormat:@"%.2fMB/%.2fMB",self.totalSize * self.uploadPercent /1024.0/1024.0,self.totalSize/1024.0/1024.0]; 
    9.     if (self.progressBlock) { 
    10.         self.progressBlock(self.uploadPercent,self.progressLableText); 
    11.     } 
    12.     // 刷新本地缓存 
    13.     [[YJTUploadManager shareUploadManager] refreshCaches]; 
    14.      
    15. @end 

    3.上传

    关于上传进度,可以粗略计算。也可应用NSURLSessionDataTask的countOfBytesSent及时`控。其实NSURLSessionTask在iOS11今后还供给了progress属性。附上核心代码供给参考。

    初次调用上传接口

    1. #pragma mark- first upload 断点 
    2. // 上传初始化 
    3. - (void)uploadData:(NSData *)data withModel:(YJTDocUploadModel *)model { 
    4.      
    5.     // 寂?娆数 
    6.     NSInteger count = data.length / (kSuperUploadBlockSize); 
    7.     NSInteger blockCount = data.length % (kSuperUploadBlockSize) == 0 ? count : count + 1; 
    8.      
    9.     // 给model赋值 
    10.     model.filePath = [self writeToCacheVideo:data appendNameString:model.lastPathComponent]; 
    11.     model.totalCount = blockCount; 
    12.     model.totalSize = data.length; 
    13.     model.uploadedCount = 0; 
    14.     model.isRunning = YES; 
    15.      
    16.     // 上传所需参数 
    17.     NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; 
    18.      
    19.     parameters[@"sequenceNo"] = @0; 
    20.     parameters[@"blockSize"] = @(kSuperUploadBlockSize); 
    21.     parameters[@"totFileSize"] = @(data.length); 

        推荐阅读

        大数据查询——HBase 读写设计与实践

      【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?背景介绍本项目重要解决 check 和 opinion2 张汗青数据表(汗青数据是指当营业产生过程中的完全中心流程和结不雅数据)的在>>>详细阅读


      本文标题:iOS模仿断点机制上传文件实现方法

      地址:http://www.17bianji.com/lsqh/39995.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)