老师,请帮我看一下上传视频的代码?可以显示上传成功,但是播放会显示无效源。

老师,请帮我看一下上传视频的代码?可以显示上传成功,但是播放会显示无效源。

jsp文件:

wj.jsp:

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="gb2312"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My JSP 'wj.jsp' starting page</title>

    

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

<link type="text/css" rel="stylesheet" href="css/style2.css">

<link type="text/css" rel="stylesheet" href="css/style4.css">

<style type="text/css">

<!--

.c1 {

margin-top: 100px;

font-size:30px;

}

</style>

  </head>

  

  <body>

  

   <form action="wjsz1717/acceptFile1717.jsp" method="post" ENCTYPE="multipart/form-data" id="registerForm">

   <INPUT type=FILE name="boy" size="45"/>

   <button id="submit" type="submit">提交</button>

   <button id="submit" type="reset">重置</button>

   </form>

   </body>

</html>


accepFile1717.jsp:


<%@ page language="java" contentType="text/html" import="java.util.*,java.io.*" pageEncoding="utf-8"%>

<%@ taglib tagdir="/WEB-INF/tags" prefix="upload" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My JSP 'acceptFile1717.jsp' starting page</title>

    

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

<style type="text/css">

<!--

.c1 {

margin-top: 50px;

font-size:30px;

}

</style>

  </head>

<body>

    <upload:UpFile subdir="image1"/>

        <div class="c1">

        <%=message %><br>

        <%=fileName %>

        <br><embed src="image1/<%=fileName %>" >

     </div>

  </body>

</html>


tag文件:UpFile.tag:

<%@ tag pageEncoding="gb2312" %>

<%@ tag import="java.io.*" %>

<%@ attribute name="subdir" required="true" %>

<%@ variable name-given="message" scope="AT_END" %>

<%@ variable name-given="fileName" scope="AT_END" %>

<%

jspContext.setAttribute("message","");

String fileName=null;

try{

String tempFileName=(String)session.getId();

File file=new File("D:/myeclipse/Test/WebRoot");

String parentDir=file.getAbsolutePath();

    String saveDir=parentDir+"/"+subdir;

    File dir=new File(saveDir);

    dir.mkdir();

    File f1=new File(dir,tempFileName);

    FileOutputStream o=new FileOutputStream(f1);

    InputStream in=request.getInputStream();

    byte b[]=new byte[10000];

    int n;

    while((n=in.read(b))!=-1){

        o.write(b,0,n);

    }

    o.close();

    in.close();

    RandomAccessFile randomRead=new RandomAccessFile(f1,"r");

    int second=1;

    String secondLine=null;

    while(second<=2){

         secondLine=randomRead.readLine();

         second++;

    }

    System.out.println("-----------1:"+secondLine);

    int position=secondLine.lastIndexOf("\\");

    fileName=secondLine.substring(position+1,secondLine.length()-1);

    System.out.println("-----------2:"+fileName);

    randomRead.seek(0);

    long forthEndPosition=0;

    int forth=1;

    while((n=randomRead.readByte())!=-1&&(forth<=4)){

       if(n=='\n'){

          forthEndPosition=randomRead.getFilePointer();

          forth++;

       }

    }

    byte cc[]=fileName.getBytes("ISO-8859-1");

    fileName=new String(cc);

    File f2=new File(dir,fileName);

    RandomAccessFile randomWrite=new RandomAccessFile(f2,"rw");

    randomRead.seek(randomRead.length());

    long endPosition=randomRead.getFilePointer();

    long mark=endPosition;

    int j=1;

    while((mark>=0)&&(j<=6)){

        mark--;

        randomRead.seek(mark);

        n=randomRead.readByte();

        if(n=='\n'){

           endPosition=randomRead.getFilePointer();

           j++;

        }

    }

    randomRead.seek(forthEndPosition);

    long startPoint=randomRead.getFilePointer();

    while(startPoint<endPosition-1){

        n=randomRead.readByte();

        randomWrite.write(n);

        startPoint=randomRead.getFilePointer();

    }

    randomWrite.close();

    randomRead.close();

    jspContext.setAttribute("message","上传成功");

    jspContext.setAttribute("fileName",fileName);

    f1.delete();

  }

catch(Exception ee){

   jspContext.setAttribute("message","没有选择文件或上传文件失败");

  }

%>    

用于播放的jsp文件 view.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

    

    <title>My JSP 'view.jsp' starting page</title>

    

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">    

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->


  </head>

  

  <body>

  <video width="320" height="240" controls>

  <source src="image1/2.mp4" type="video/mp4">

  <source src="image1/2.ogg" type="video/ogg">

</video>

  </body>

</html>

http://img1.sycdn.imooc.com//climg/5d5d3f880001597d04190389.jpghttp://img1.sycdn.imooc.com//climg/5d5d3fab0001b74004070287.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
提问者 精慕门618366 2019-08-24 18:14:01

老师,我统一了编码格式也还是不行,双击目录中已上传的视频还是乱码

http://img1.sycdn.imooc.com//climg/5d610de200017b3c13200369.jpg

  • 同学是在eclipse中打开的吗?老师的意思是到上传之后的磁盘路径下,看视频能否播放,同学在eclipse中打开肯定是这样的,eclipse会把它当做文件打开。所以同学要找到项目部署的路径,去本地磁盘下面看能否播放。祝学习愉快~
    2019-08-24 19:01:10
  • 提问者 精慕门618366 回复 好帮手慕柯南 #2
    本地磁盘下可以播放的
    2019-08-24 19:09:39
  • 提问者 精慕门618366 回复 好帮手慕柯南 #3
    只要我把本地磁盘路径的原有视频复制到myeclipse中存储视频文件的那个文件夹就可以播放,但是经过上传到myeclipse中存储视频文件的那个文件夹就不好使。
    2019-08-24 19:13:14
好帮手慕柯南 2019-08-24 10:39:07

同学你好!

可能是由于乱码导致文件格式损坏,老师看了同学的编码:

  1. jsp页面有的使用了utf-8,有的使用了gbk2312

  2. tag文件使用了gbk2312,

  3. 上传文件时又使用了ISO-8859-1

同学这么多种编码格式,肯定会导致乱码,建议同学编码格式统一一下测试。

另外老师建议同学使用html实现视频上传,可以避免很多问题,并且在实际的开发中通常也是使用html页面。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

好帮手慕柯南 2019-08-23 11:20:30

同学你好!

我们来换一个思路解决问题:

  1. 建议同学在web.xml中添加以下代码:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.mp4</url-pattern>
    <url-pattern>*.avi</url-pattern>
</servlet-mapping>

  2.上传成功之后,同学先找到上传之后的视频在本地磁盘的路径,在本地先测试一下视频能否播放。然后在测试在jsp页面能否播放。

祝学习愉快~

  • 提问者 精慕门618366 #1
    本地是可以播放的,上传之后在jsp页面不能播放。
    2019-08-23 18:05:09
  • 好帮手慕柯南 回复 提问者 精慕门618366 #2
    同学是上传之后的目录里面哦,也就是查看上传后在项目下面的是否能正常播放。祝学习愉快~
    2019-08-23 19:21:26
  • 提问者 精慕门618366 回复 好帮手慕柯南 #3
    上传之后的目录中点击后是很多乱码啊
    2019-08-23 22:11:36
好帮手慕阿满 2019-08-22 18:38:02

同学你好,这边试验同学的代码,上传视频跳转一直是404,无法上传。建议同学可以参考登录注册案例中,将img标签换成embed标签,如:

http://img1.sycdn.imooc.com//climg/5d5e7027000134a706960080.jpg

另外同学可以检查一下上传后image文件夹下的视频是否可以正常播放。

祝:学习愉快~

  • 提问者 精慕门618366 #1
    我的代码不就是吧img换成这个embed的吗?可以上传成功啊,只不过之后视频文件不好使了。不知道为什么?
    2019-08-22 21:12:09
好帮手慕阿满 2019-08-22 11:43:50

同学你好,同学提供的代码时完整的吗?同学的项目结构是什么样的,这边复制同学的代码报错,如:

http://img1.sycdn.imooc.com//climg/5d5e0f050001219606000083.jpg

http://img1.sycdn.imooc.com//climg/5d5e0f100001f4b606120189.jpg


另外播放视频,建议同学换个浏览器再试试。

祝:学习愉快~

  • 提问者 精慕门618366 #1
    WebRoot下,tag文件是在WEB-INF文件夹下,新建一个tags文件夹,然后将我的tag文件放入tags文件下。 WebRoot下,新建一个wjsz1717文件夹,然后将我的acceptFile.jsp和wj.jsp文件放入此文件夹下。 view.jsp文件直接放在WebRoot下。
    2019-08-22 17:05:23
  • 提问者 精慕门618366 #2
    要不,老师我在重新发一下结构图。在提问中
    2019-08-22 17:06:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师