Giter VIP home page Giter VIP logo

zxlupload's Introduction

ZXLUpload

背景: 由于公司做的App 对于文件上传数量控制在100,而且一部分功能不是同步等待上传结果的。 视频要压缩为.mp4 ,时间不能为5分钟。(相信很多人看到这个背景就头大了,100个文件什么鬼) 还是自己慢慢分析实现吧。

功能分析

1.等待多文件上传任务成功进行下一步操作。(等待上传成功再操作其他的功能)

2.不等待多文件上传任务成功继续操作其他的功能。(不等上传结果操作其他功能)

3.与非多文件任务上传同时存在。(这个任务实现要与单个文件上传方式同在)

4.断网后所有上传任务中断,恢复网络后所有任务继续。

5.App突然被干掉重启继续中断的上传任务。

6.上传成功过的文件不重复上传,减少流量损耗、提高上传速度、提高上传成功率。

7.不同任务中有相同文件正在上传等待上传结果,同步上传进度、文件信息。(如果有需要视频压缩同理)

8.有视频压缩的控制同时存在的压缩数量。

9.文件上传控制同时存在的上传数量。(目前我用的阿里云上传库里面解决了此问题)

10.控制内存、CPU等性能。

暂时就分析到这里吧

实现思路

1.准备工作

1.1、文件上传实现,(ZXLAliOSSManager) 公司目前服务器都在阿里云上所以上传也用的阿里云,我只是简单的实现了一个上传封装。

1.2、文件信息model 、任务信息model。(ZXLFileInfoModel、ZXLTaskInfoModel)

1.3、文件处理工具(ZXLFileUtils)、图片处理工具(ZXLPhotosUtils)、视频处理工具(ZXLVideoUtils)、存储管理包括沙盒和数据库(ZXLDocumentUtils和ZXLUploadFmdb)。

1.4、上传结果增、删、改、查。(ZXLUploadFileResultCenter)

1.5、网络环境和状态监控。(ZXLReachability、ZXLNetworkManager)

2.实现过程

2.1、上传管理中心。(ZXLUploadFileManager)

处理任务文件上传和非任务文件上传。

2.2、上传任务管理中心。(ZXLUploadTaskManager)

3.线程安全考虑,针对数组(ZXLSyncMutableArray)、字典(ZXLSyncMutableDictionary)等做线程安全。

4.性能考虑。

4.1、压缩性能考虑。(ZXLCompressManager、ZXLCompressOperation)

4.2、上传性能考虑。(阿里云上传库里面解决了此问题、如果用的是七牛的库可以参考压缩新能考虑的做上传处理)

使用DOME 还在编写中....请耐心等待 库中使用了阿里云库 和FMDB库 个人邮箱[email protected]

zxlupload's People

Contributors

zxlboaconstrictor avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.