gpt4 book ai didi

java - 如何在 servlet 中显示文件位置的视频

转载 作者:行者123 更新时间:2023-12-01 11:05:59 25 4
gpt4 key购买 nike

我想显示文件夹中的视频(项目文件夹除外)。我使用 servlet 完成了如下

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Video extends HttpServlet {


public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException
{
response.setContentType("video/mp4");
ServletOutputStream out;
out = response.getOutputStream();
FileInputStream fin = new FileInputStream("D:/7-4/Html/myvideo");

BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(out);
int ch =0;
while((ch=bin.read())!=-1)
{
bout.write(ch);
}

bin.close();
fin.close();
bout.close();
out.close();
}
}

但是当我运行该项目时,该网页无法使用浏览器的视频插件运行(它可以运行 mp4 视频)。但是当我尝试保存它(使用 cntr+s)时,它被正确保存,请告诉我实现此目的的正确方法。 我知道它可以显示图像和 pdf,但是当涉及到视频时,浏览器无法运行视频,这就是我问这个问题的原因

最佳答案

您正在使用以下代码行设置响应的Content-Type:

response.setContentType("video/mp4");

浏览器将检查响应中的 Content-Type header ,以确定如何处理您的视频文件。

如果您返回 mp4 以外的视频,则应在响应中指定正确的 Content-Type 值。否则浏览器将无法正确播放视频。

请参阅http://www.sitepoint.com/web-foundations/mime-types-complete-list/为具有不同扩展名的视频返回正确的 Content-Type 值。

编辑:看起来您的原始代码正在将整数而不是字节写入输出流。本质上,您是将原始视频文件转换为数字流并将数字写回。这应该是读取视频文件的正确方法:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Video extends HttpServlet {


public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException
{
response.setContentType("video/mp4");
ServletOutputStream out = response.getOutputStream();
FileInputStream fin = new FileInputStream("D:/7-4/Html/myvideo");

byte [] buf = new byte[4096];
int read;
while((read = fin.read(buf)) != -1)
{
out.write(buf, 0, read);
}

fin.close();
out.flush();
out.close();
}
}

关于java - 如何在 servlet 中显示文件位置的视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32942494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com