1、前言

在项目中,我们会遇到在线预览,播放MP3、图片、MP4等。用户上传文件后,将路径存储在数据库中,我们可动态读取数据库的数据,然后通过返回文件路径的字符串,在src中发送请求。当然这需要带参数。后台返回流。

2、前台代码:

<script type="text/javascript">
function getVideo(id){
window.location.href="${pageContext.request.contextPath }/Test/getVideo.do?id="+id;
}
</script>
</head>
<body>
<h3>${message }</h3>
<h1>Hello !!!</h1>
<button id="btn" onclick="getVideo('ea48576f30be1669971699c09ad05c94');">播放</button>
<%-- <video id="video" >
<source src="${path }">
</video> --%>
<audio id="mp3" src="${path }" autoplay="true" controls="true">
</audio>
</body>

3、后台代码:

@Controller
@RequestMapping("/Test")
public class TestController { /**
* 视频跳转
* @param id
* @return
*/
@RequestMapping("/getVideo.do")
public ModelAndView getVideo(String id) {
ModelAndView mav = new ModelAndView("success");
mav.addObject("path", "/Test/Test/video.do?id="+id);
return mav;
} /**
* 视频流读取
* @param id
* @param response
* @throws Exception
*/
@RequestMapping("/video.do")
public @ResponseBody void video(String id, HttpServletResponse response)throws Exception{
File file = new File("E:/1.mp3");
FileInputStream in = new FileInputStream(file);
ServletOutputStream out = response.getOutputStream();
byte[] b = null;
while(in.available() >0) {
if(in.available()>10240) {
b = new byte[10240];
}else {
b = new byte[in.available()];
}
in.read(b, 0, b.length);
out.write(b, 0, b.length);
}
in.close();
out.flush();
out.close();
}
}

Reference:

[1] 陶国荣, HTML5实战, 机械工业出版社, 2012, 116-117

最新文章

  1. win10控制台程序printf死锁问题
  2. WPF 依赖属性
  3. Github windows客户端简单使用教程
  4. Matlab读入含有特殊分隔符的文件(textread)
  5. android ButterKnife 解决重复findViewById
  6. 通过 itms-services 协议,发布或者分享 iOS 应用程序
  7. solr5.5教程-tomcat布署(2)
  8. hdoj 5400 Arithmetic Sequence
  9. DOM事件逐层上机传递
  10. MySQL InnoDB存储引擎undo redo解析
  11. How do JavaScript closures work?
  12. linux下vim编辑器使用
  13. 在Unity3D项目中接入ShareSDK实现安卓平台微信分享功能(可使用ShareSDK默认UI或自定义UI)
  14. 灵玖软件Nlpir Parser语义智能内容过滤
  15. MATLAB三点确定圆
  16. 关于ios的光标和键盘回弹问题
  17. SuperMap 9D 实时数据服务学习笔记
  18. MariaDB导入XXX.sql文件
  19. k8s~术语解释
  20. meta标签的http-equiv与content解析

热门文章

  1. .NET MVC 序列化与反序列化
  2. dataGridView1_RowEnter事件与dataGridView1.CurrentRow一起使用错误问题
  3. 一些质量极高的project-based tutorials
  4. 《Real World Haskell》内容脉络整理
  5. Java自学-I/O 缓存流
  6. Redis基本使用(一)
  7. tp5.0在控制器中和在模板中调用配置文件中的常量
  8. 打包工具webpack和热加载深入学习
  9. 性能测试-MySQL性能查看(转)
  10. mysql 常用 sql 语句 - 快速查询