Java的新项目学成在线笔记-day13(九)
6.2.2 创建媒资服务工程
媒资管理的相关功能单独在媒资服务中开发,下边创建媒资服务工程(xc-service-manage-media)。 媒资服务的配置与cms类似,导入 “资料”--》xc-service-manage-media工程,工程结构如下:
6.3上传文件
6.3.1 断点续传解决方案
通常视频文件都比较大,所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大 小没有限制,但是客户的网络环境质量、电脑硬件环境等参差不齐,如果一个大文件快上传完了网断了,电断了没 有上传完成,需要客户重新上传,这是致命的,所以对于大文件上传的要求最基本的是断点续传。
什么是断点续传:
引用百度百科:断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个 部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传 下载未完成的部分,而没有必要从头开始上传下载,断点续传可以提高节省操作时间,提高用户体验性。
如下图:
上传流程如下:
1、上传前先把文件分成块 2、一块一块的上传,上传中断后重新上传,已上传的分块则不用再上传
3、各分块上传完成最后合并文件
文件下载则同理。
6.3.2 文件分块与合并
为了更好的理解文件分块上传的原理,下边用java代码测试文件的分块与合并。 6.3.2.1文件分块
文件分块的流程如下:
1、获取源文件长度
2、根据设定的分块文件的大小计算出块数 3、从源文件读数据依次向每一个块文件写数据。
[mw_shl_code=applescript,true] //测试文件分块方法 @Testpublic void testChunk() throws IOException { File sourceFile = new File("F:/develop/ffmpeg/lucene.mp4"); // File sourceFile = new File("d:/logo.png"); String chunkPath = "F:/develop/ffmpeg/chunk/"; File chunkFolder = new File(chunkPath); if(!chunkFolder.exists()){chunkFolder.mkdirs();
} //分块大小 long chunkSize = 1024*1024*1; //分块数量 long chunkNum = (long) Math.ceil(sourceFile.length() * 1.0 / chunkSize ); if(chunkNum<=0){ chunkNum = 1; } //缓冲区大小 byte[] b = new byte[1024]; //使用RandomAccessFile访问文件 RandomAccessFile raf_read = new RandomAccessFile(sourceFile, "r"); //分块
for(int i=0;i<chunkNum;i++){ //创建分块文件 File file = new File(chunkPath+i); boolean newFile = file.createNewFile(); if(newFile){ //向分块文件中写数据 RandomAccessFile raf_write = new RandomAccessFile(file, "rw"); int len = ‐1; while((len = raf_read.read(b))!=‐1){ raf_write.write(b,0,len); if(file.length()>chunkSize){ break; } } raf_write.close(); } } raf_read.close(); }
[/mw_shl_code]
转载于:https://blog.51cto.com/13517854/2406091
Java的新项目学成在线笔记-day13(九)相关推荐
- Java的新项目学成在线笔记-day13(八)
6 媒资管理 前边章节完成在线视频播放,如何实现点击课程计划播放视频呢,课程视频如何管理呢? 本节开始将对课程视频进行管理. 6.1需求分析 媒资管理系统是每个在线教育平台所必须具备的,百度百科对它的 ...
- Java的新项目学成在线笔记-day10(三)
1.4 测试CMS一键发布接口 1.4.1 配置虚拟主机 在nginx配置课程详情页面的虚拟主机,实现访问:www.xuecheng.com/course/detail/.....html. #静态资 ...
- Java的新项目学成在线笔记-day12(九)
3.1.4 搜索页面 创建搜索页面如下: 页面文件参考:"资料"-->"search"-->index_1.vue,重要代码如下: nuxt.js支 ...
- Java的新项目学成在线笔记-day14(四)
1.2.3.5 视频处理生成m3u8 下边是完整的视频处理任务类代码,包括了生成m3u8及生成mp4的代码. [mw_shl_code=applescript,true]@Component publ ...
- Java的新项目学成在线笔记-day7(一)
1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查询要实现分页. ...
- Java的新项目学成在线笔记-day10(二)
1.3 课程发布接口 1.3.1 Api接口 此Api接口由课程管理提供,由课程管理前端调用此Api接口,实现课程发布. 在api工程下课程管理包下定义接口: [mw_shl_code=applesc ...
- Java的新项目学成在线笔记-day7(二)
1.3 前端页面说明 我的课程列表使用element 的card组件,如下: 页面布局代码如下: <template> <section> <el‐row >< ...
- Java的新项目学成在线笔记-day8(三)
1.1.3.1 需求 上传图片界面如下图: 点击"加号"上传图片,图片上传成功自动显示:点击"删除"将删除图片. 1.1.3.2 页面 使用Element-UI ...
- Java的新项目学成在线笔记-day12(六)
3.6 获取数据 3.6.1 asyncData 方法 Nuxt.js 扩展了 Vue.js,增加了一个叫 asyncData 的方法, asyncData 方法会在组件(限于页面组件)每次加载 之前 ...
最新文章
- 毫米波雷达分类和技术方案
- springCloud之配置中心学习
- 2021年春季学期-信号与系统-第九次作业参考答案-第三小题
- tensors used as indices must be long or byte tensors
- table居中显示_「CSS三种居中方案全解」CSS垂直居中常用方法集结
- CodeForces - 1272E Nearest Opposite Parity(多源起点的最短路)
- LuckyDraw app被评为Microsoft365 App Award
- i18n php_PHP国际化多语言的实现(非I18N)
- 中国联通官网被发现含木马脚本,可向用户推广色情APP
- 第一次执行时没有问题,重复执行会出错、GP循环
- 生产者消费者_Kafka之生产者/消费者
- 番外篇:根据学习程度划分程序员的级别
- 关键字: datagridview 属性 说明
- MySQL 显示版本、端口、状态
- 计算机桌面图标扁了,电脑桌面图标及文字变扁怎么办
- Excel多个sheet导出pdf
- 申请企业邮箱的好处,哪个企业邮箱好用?企业邮箱功能对比排行榜
- linux tac文件最后五行,tac命令以及各种linux文件查看命令
- 由浅入深学java pdf_由浅入深学Java:基础、进阶与必做260题 PDF_IT教程网
- python删除一列数据_python删除txt第一列数据库