【问题标题】:jboss 6.4 add mime typejboss 6.4 添加 mime 类型
【发布时间】:2018-10-08 11:33:37
【问题描述】:

我正在尝试创建一个包含视频的 jsp 页面

<body>
Hello

<video width="400" controls>
  <source src="mov_bbb.mp4" type="video/mp4">
  <source src="mov_bbb.ogg" type="video/ogg">
  Your browser does not support HTML5 video.
</video>

<p>
Video courtesy of 
<a href="https://www.bigbuckbunny.org/" target="_blank">Big Buck Bunny</a>.
</p>


</body>

这在 tomcat 8.5 中有效,但是当我将它移动到 jboss 6.4 中的项目时 即11抛出错误

AUDIO/VIDEO: Unknown MIME type.

我将 Mime 类型添加到我的项目 web.xml 中:

<mime-mapping>
    <extension>mp4</extension>
    <mime-type>video/mp4</mime-type>
</mime-mapping>

我可以将 mimetype 添加到standalone.xml 吗? 或者我的问题是什么?

【问题讨论】:

  • 看看这个,你不需要处理standalone.xml,这个SO是我帮助有类似问题的人wildfly undertow file mimetypes它是wildfly,但这不重要
  • 我已经编辑了问题并添加了xml的sn-p,它仍然抛出错误。
  • 这听起来像是一个愚蠢的问题。对于 mime 类型,我必须遵循一个顺序吗?我把它放在会话配置之后和欢迎文件列表之前
  • 我不相信有任何排序,除非您将“mp4”复制为扩展名。从 2016 年开始,我确实看到了“显然 mp4 导致某些浏览器出现问题”。您不是在 Safari 中进行测试,您还尝试过哪些浏览器?此外,在standalone.xml 中尝试在undertow &lt;filter-ref name="content-mp4" predicate="path-suffix['.mp4']"/&gt; 的主机元素中添加这个,然后在undertow 的filters 元素中添加这个&lt;response-header name="content-mp4" header-name="Content-Type" header-value="video/mp4"/&gt; - 但我认为你不应该这样做。还要检查正在发送的标头。
  • 对不起,我对JBoss的了解不是很深,我找不到undertow标签或host标签,我需要在哪里重新放置?并且响应头是文件 video/mp4

标签: jboss html5-video internet-explorer-11


【解决方案1】:

注意在尝试此修改之前备份您的独立或域 xml 文件!

Undertow 实际上是 JBoss EAP 7 的一部分,对于 JBoss EAP 6,请在 Standalone.xml 中找到此部分(如果您使用独立模式,如果域模式则查找 domain.xml)

    <subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
        </virtual-server>
    </subsystem>

并添加此条目

<configuration>
     <mime-mapping name="mp4" value="video/mp4"/>
 </configuration>

最后,你的网络子系统应该是这样的

    <subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">
        <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
        <virtual-server name="default-host" enable-welcome-root="true">
            <alias name="localhost"/>
            <alias name="example.com"/>
        </virtual-server>
        <configuration>
            <mime-mapping name="mp4" value="video/mp4"/>
        </configuration>
    </subsystem>

不要逐字复制上面的整个部分并粘贴到已经存在的内容上,因为网络版本,元素和属性可能不同,只需添加配置部分。

更新 - 事实证明我真的不需要添加 mime 类型标题,至少在 Chrome 中进行测试时 - 视频在具有以下目录结构的网页上显示良好(请注意,尽管OGG格式没有)

【讨论】:

  • 抱歉,没有。我正在检查其他配置文件和日志以了解问题所在。
  • 我发现即使我把文件直接链接,服务器也不下载电影,这很常见吗?我的意思是如果有意义,服务器“无法”找到该文件。
  • 我现在认为您的应用可能存在其他问题。我创建了一个动态战争项目,添加了一个 index.jsp 页面,其中基本上没有任何内容,我下载了两个(信不信由你,与您正在测试的相同)视频并将它们放在 WebContent 文件夹中,基本相同的位置作为 index.jsp。然后我将您的代码粘贴进去。我没有对 web.xml 或standalone.xml 进行任何更改,例如我没有在任何地方添加 mime 类型标题。我部署了战争,导航到 URL,视频在 chrome 的网页上显示和播放 - 因此,一旦部署到服务器,请检查您的部署,
  • 我添加了您的 WAR 在部署后应该是什么样子的图像!
  • 似乎我遇到了其他问题,我使用了一个 SWF 文件并且它工作了......有点,我不得不使用对象标签而不是视频标签。并且文件在它们应该在的位置。 SWF 和 MP4 文件在同一个文件夹中。
【解决方案2】:

终于得到了我的答案。事实证明,在我插入 MIME 类型的正上方,有一个包含所有支持的 MIME 类型的部分。

在我的案例中设置 MIME 类型的正确方法是

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

【讨论】:

    猜你喜欢
    • 2018-05-07
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2011-01-07
    • 2010-09-07
    • 2014-04-05
    • 1970-01-01
    相关资源
    最近更新 更多