JSP页面嵌入media player 读取服务器上的视频文件

zhengqiqiqinqin 2012-12-13 05:22:20
在JSP页面,嵌入微软的media player 去播放视频,视频的路径存放在本服务器中【即比如web工程放在服务器的D盘,视频文件放在服务器的E盘】,如何使用该media player 去播放视频文件?目前已经解决的是,能够去播放服务器下的某一个英文路径下的某一个英文视频文件,但是无法播放中文路径下的文件【注:凡是路径或者文件名中有中文,就不能够播放,会出现乱码,当然,我也想到了去编码和解码】
jsp页面中,<object>标签下的部分文件:
<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
id="MediaPlayer1" width="209" height="147">
<param name="Filename" value="<%=basePath + "EScreenShow?filePath="%><c:out value="${dzxsp_url}" />">
其中:basePath是发布在tomcat下的工程的路径;EScreenShow是一个servlet,在该servlet中可以读取文件路径为filePath下的文件,EScreenShow核心代码如下:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filePath = request.getParameter("filePath");
filePath = new String(filePath.getBytes("iso-8859-1"),"utf-8");
//根据需求,拼接出对应filePath下的视频文件的详细路径
FileInputStream in = null;
OutputStream out = null;
try {
if(filePath!=null){
//in = new FileInputStream("F:\\测试文件\\视频\\北京欢迎你.mpg");
File file = new File(filePath);
File files[] = file.listFiles();
if(files.length>=1){
//正常filePath下可能有多个视频文件,但是目前该功能还没有实现,只取一个文件!用files[0]
in = new FileInputStream(files[0].getAbsolutePath());
out = response.getOutputStream();
byte[] buf = new byte[1024000];
int length;
while ((length = in.read(buf)) != -1) {
out.write(buf, 0, length);
}
out.flush();
}else{
System.out.println("没有找到文件!");
}

}

在浏览器访问服务器的时候,由于每次都只会读取部分流,所以浏览器会多次发出请求去调用doPost方法,在访问某个视频文件 刚开始的时候,filePath 取值是正确的,但是在最后几次访问的时候,如果视频文件或者路径下有中文,就会出现乱码!
【注】在后台将filePath传到前台时,已经使用utf-8编码过了
乱码这问题如果解决?或者大家对这种在jsp页面嵌入media player 去播放视频文件,有啥好的方法没?
万分感谢………………





...全文
412 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
水上冰石 2014-03-20
  • 打赏
  • 举报
回复
首先明确你项目用的什么编码?是iso-8859-1?不是的话就把 iso-8859-1 改成你的编码格式,比如gb2312 filePath = new String(filePath.getBytes("iso-8859-1"),"utf-8");
阿Q不见了 2013-09-23
  • 打赏
  • 举报
回复
引用 楼主 zhengqiqiqinqin 的回复:
在JSP页面,嵌入微软的media player 去播放视频,视频的路径存放在本服务器中【即比如web工程放在服务器的D盘,视频文件放在服务器的E盘】,如何使用该media player 去播放视频文件?目前已经解决的是,能够去播放服务器下的某一个英文路径下的某一个英文视频文件,但是无法播放中文路径下的文件【注:凡是路径或者文件名中有中文,就不能够播放,会出现乱码,当然,我也想到了去编码和解码】 jsp页面中,<object>标签下的部分文件: <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" id="MediaPlayer1" width="209" height="147"> <param name="Filename" value="<%=basePath + "EScreenShow?filePath="%><c:out value="${dzxsp_url}" />"> 其中:basePath是发布在tomcat下的工程的路径;EScreenShow是一个servlet,在该servlet中可以读取文件路径为filePath下的文件,EScreenShow核心代码如下: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filePath = request.getParameter("filePath"); filePath = new String(filePath.getBytes("iso-8859-1"),"utf-8"); //根据需求,拼接出对应filePath下的视频文件的详细路径 FileInputStream in = null; OutputStream out = null; try { if(filePath!=null){ //in = new FileInputStream("F:\\测试文件\\视频\\北京欢迎你.mpg"); File file = new File(filePath); File files[] = file.listFiles(); if(files.length>=1){ //正常filePath下可能有多个视频文件,但是目前该功能还没有实现,只取一个文件!用files[0] in = new FileInputStream(files[0].getAbsolutePath()); out = response.getOutputStream(); byte[] buf = new byte[1024000]; int length; while ((length = in.read(buf)) != -1) { out.write(buf, 0, length); } out.flush(); }else{ System.out.println("没有找到文件!"); } } 在浏览器访问服务器的时候,由于每次都只会读取部分流,所以浏览器会多次发出请求去调用doPost方法,在访问某个视频文件 刚开始的时候,filePath 取值是正确的,但是在最后几次访问的时候,如果视频文件或者路径下有中文,就会出现乱码! 【注】在后台将filePath传到前台时,已经使用utf-8编码过了 乱码这问题如果解决?或者大家对这种在jsp页面嵌入media player 去播放视频文件,有啥好的方法没? 万分感谢………………
顶下你 死帖复活~~~~同求~~~
zhengqiqiqinqin 2012-12-15
  • 打赏
  • 举报
回复
发了好几天了,还是没有人过来看看……我就不相信了,这问题难道就我一个人遇到?全球那么多开发人员……

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧