设置服务器的MIME类型

时间:2011-04-04 05:13:02

标签: ruby-on-rails mongrel mime-types

我看过很多关于设置MIME类型的主题。

但是,没有人帮助过我。

他是我的问题:

我有一个带有.ogv和.mov格式视频的Rails网站,位于/ public文件夹中。 我在HTML5视频标签中引用这些文件。

.mov文件没有问题,它们在WebKit浏览器中播放效果很好。

问题在于.ogv。

我认为,这是因为.ogv的错误MIME类型。

这是我得到的.mov(正确):

$ curl -I http:/mywebsite.com/video.mov

HTTP/1.1 200 OK
Date: Sun, 03 Apr 2011 19:57:41 GMT
ETag: "4d98744c-1bb-87563c0"
Last-Modified: Sun, 03 Apr 2011 13:21:16 GMT
Content-Type: video/quicktime
Content-Length: 443

这就是我得到的.ogv:

$ curl -I http://mywebsite.com/video.ogv

HTTP/1.1 200 OK
Date: Sun, 03 Apr 2011 19:22:20 GMT
ETag: "4d987dcf-379884-81c533dc"
Last-Modified: Sun, 03 Apr 2011 14:01:51 GMT
Content-Type: application/octet-stream
Content-Length: 3643524

而不是“application / octet-stream”,我需要“video / ogg”。

我有一个Mongrel服务器(没有Apache作为前端),正如我最近所知道的那样。所以,没有办法使用.htaccess。

我需要为常规文件设置MIME类型,从控制器等设置响应。

我尝试了几种方法,在我之前的问题中进行了描述:HTML 5 video (ogv) and MIME types

但我不行。我仍然得到“application / octet-stream”。

我的问题是:

  1. 如何设置常规文件的mime类型,来自控制器的响应?

  2. Mongrel是否提供位于/ public目录中的文件或其他内容?

1 个答案:

答案 0 :(得分:0)

我已经明白了。

我上一个问题中描述的所有方法都是为Rails环境设置MIME类型,而不是Mongrel。

我需要在Mongrel级别使用其他MIME类型,而不是Rails。

所以,通过启动mongrel ......

/usr/bin/mongrel_rails,

...我需要传递一个YAML文件,其中包含其他MIME类型,我想申报。此YAML文件可能如下所示(mongrel_mime_types.yml):

.ogv: video/ogg
.ogg: application/ogg
.ogx: application/ogg

为方便起见,我将它保存在/ config / initializers中。

因此,通过启动Mongrel,我需要传递此文件:

/usr/bin/mongrel_rails -m /path_to_my_project/http/config/initializers/mongrel_mime_types.yml

现在,如果我用curl检查,我得到了正确的MIME:

$ curl -I http://mywebsite.com/video.ogv

HTTP/1.1 200 OK
Date: Mon, 04 Apr 2011 05:38:01 GMT
ETag: "4d987dcf-379884-81c533dc"
Last-Modified: Sun, 03 Apr 2011 14:01:51 GMT
Content-Type: video/ogg
Content-Length: 3643524