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(九)相关推荐

  1. Java的新项目学成在线笔记-day13(八)

    6 媒资管理 前边章节完成在线视频播放,如何实现点击课程计划播放视频呢,课程视频如何管理呢? 本节开始将对课程视频进行管理. 6.1需求分析 媒资管理系统是每个在线教育平台所必须具备的,百度百科对它的 ...

  2. Java的新项目学成在线笔记-day10(三)

    1.4 测试CMS一键发布接口 1.4.1 配置虚拟主机 在nginx配置课程详情页面的虚拟主机,实现访问:www.xuecheng.com/course/detail/.....html. #静态资 ...

  3. Java的新项目学成在线笔记-day12(九)

    3.1.4 搜索页面 创建搜索页面如下: 页面文件参考:"资料"-->"search"-->index_1.vue,重要代码如下: nuxt.js支 ...

  4. Java的新项目学成在线笔记-day14(四)

    1.2.3.5 视频处理生成m3u8 下边是完整的视频处理任务类代码,包括了生成m3u8及生成mp4的代码. [mw_shl_code=applescript,true]@Component publ ...

  5. Java的新项目学成在线笔记-day7(一)

    1.1需求分析 课程添加完成后可通过我的课程进入课程修改页面,此页面显示我的课程列表,如下图所示,可分页查询. 注意:由于课程图片服务器没有搭建,这里在测试时图片暂时无法显示. 上边的查询要实现分页. ...

  6. Java的新项目学成在线笔记-day10(二)

    1.3 课程发布接口 1.3.1 Api接口 此Api接口由课程管理提供,由课程管理前端调用此Api接口,实现课程发布. 在api工程下课程管理包下定义接口: [mw_shl_code=applesc ...

  7. Java的新项目学成在线笔记-day7(二)

    1.3 前端页面说明 我的课程列表使用element 的card组件,如下: 页面布局代码如下: <template> <section> <el‐row >< ...

  8. Java的新项目学成在线笔记-day8(三)

    1.1.3.1 需求 上传图片界面如下图: 点击"加号"上传图片,图片上传成功自动显示:点击"删除"将删除图片. 1.1.3.2 页面 使用Element-UI ...

  9. Java的新项目学成在线笔记-day12(六)

    3.6 获取数据 3.6.1 asyncData 方法 Nuxt.js 扩展了 Vue.js,增加了一个叫 asyncData 的方法, asyncData 方法会在组件(限于页面组件)每次加载 之前 ...

最新文章

  1. 毫米波雷达分类和技术方案
  2. springCloud之配置中心学习
  3. 2021年春季学期-信号与系统-第九次作业参考答案-第三小题
  4. tensors used as indices must be long or byte tensors
  5. table居中显示_「CSS三种居中方案全解」CSS垂直居中常用方法集结
  6. CodeForces - 1272E Nearest Opposite Parity(多源起点的最短路)
  7. LuckyDraw app被评为Microsoft365 App Award
  8. i18n php_PHP国际化多语言的实现(非I18N)
  9. 中国联通官网被发现含木马脚本,可向用户推广色情APP
  10. 第一次执行时没有问题,重复执行会出错、GP循环
  11. 生产者消费者_Kafka之生产者/消费者
  12. 番外篇:根据学习程度划分程序员的级别
  13. 关键字: datagridview 属性 说明
  14. MySQL 显示版本、端口、状态
  15. 计算机桌面图标扁了,电脑桌面图标及文字变扁怎么办
  16. Excel多个sheet导出pdf
  17. 申请企业邮箱的好处,哪个企业邮箱好用?企业邮箱功能对比排行榜
  18. linux tac文件最后五行,tac命令以及各种linux文件查看命令
  19. 由浅入深学java pdf_由浅入深学Java:基础、进阶与必做260题 PDF_IT教程网
  20. python删除一列数据_python删除txt第一列数据库

热门文章

  1. 仅支持chrome的滚动条样式
  2. Java随笔--分布式
  3. 预加载系列一:DNS Prefetching 的正确使用姿势
  4. is_uploaded_file函数引发的问题
  5. WCF中的ServiceHost初始化两种方式
  6. Scala入门与进阶(五)- Scala数组
  7. 如何选择合适的分布式机器学习平台
  8. Ubuntu 16.04安装NASM汇编IDE-SASM
  9. [Nhibernate]对象状态
  10. 在日志文件中输出当前时间