ownCloud/Nextcloud MIME类型管理

我们知道,在Web中,一个文件的类型并不取决于它的后缀名,而是取决于它的MIME类型。在使用ownCloud/Nextcloud中,我们有时会上传一些类型不常见的文件,而默认的,ownCloud/Nextcloud并不会识别这个文件,仅仅是把它当作一个未知的文件对待,像下面这样:

这就很难看了……下面我将介绍如何管理ownCloud/Nextcloud上的文件类型。

MIME类型别名

ownCloud/Nextcloud控制MIME类型的文件位于resources/config/mimetypealiases.dist.json,里面有类似下方的内容。其中,:左侧的是文件的MIME类型,右侧的是这种类型所对应的图标,这儿我们把它称作别名(Alias)(图标的svg文件位于core/img/filetypes,这个我们后面说。)

{
 "application/coreldraw": "image",
 "application/font-sfnt": "image",
 "application/font-woff": "image",
 "application/illustrator": "image",
 "application/epub+zip": "text",
 "application/javascript": "text/code",
}

这些内容的作用是: 

  • 将MIME类型为application/coreldraw的Corel Draw文件以及类型为application/font-sfntapplication/font-woffapplication/illustrator的图标显示为image(即图标目录下的image.svg)
  • ePub文件将使用text图标显示
  • js文件将使用text-code图标显示

以下几个常用的MIME类型:

Mime类型 描述
image 常规图片
image/vector 矢量图像
audio 常规音频
x-office/document Word处理文档
x-office/spreadsheet 电子表格
x-office/presentation 幻灯片
text 常规文本
text/code 源代码

自定义文件图标

前面提到了我们可以自己定义不同类型的文件所对应的图标,但是ownCloud/Nextcloud自带的图标较少,只有20个。那么就很有可能发生这种情况:

c++,python,php,js,html,css……这么多不同类型的语言的源码文件都来齐了,然而它们却用的同一个图标,难以分辨。为了解决这个问题,我们可以给它们定义不同的图标。

1.以Python为例,编辑resources/config/mimetypealiases.dist.json,找到"text/x-python": "text/code",,将后部的别名text/code改为text/python像下面这样:

"text/x-python": "text/python",

2.然后找一个Python的图标,要求为svg格式,重命名为text-python.svg。

[infobox]注意这里的图标文件的命名规范,要和你所设置的类型一致(即与:后面的别名一致)。比如我将python的别名写成text/python,那么图标文件的名字就应该是text-python.svg,即将/改为-再加后缀.svg。同理,如果我要给c++文件填一个图标,别名应该写作:

"text/x-c++src": "text/cpp",

图标应该命名为:text-cpp.svg

[/infobox]

3.将图标上传至core/img/filetypes目录,注意文件权限的设置,要与目录下已有的文件保持一致。

4.执行OCC命令,更新mimetype别名数据库:

$ sudo -u www-data php occ maintenance:mimetype:update-js
mimetypelist.js is updated

5.清一下浏览器缓存,再次访问Nextcloud实例,效果:

同理,可以为其它的类型的文件添加图标:

推荐一个下载各种图标的网站:iconfont

建立独立的mimetype.json

在ownCloud/Nextcloud更新时,会将mimetypealiases.dist.json也覆盖掉,使得之前的修改失效。ownCloud/Nextcloud允许我们创建一个独立的 mimetype.json文件。

mimetypealiases.dist.json拷贝为mimetypealiases.json,并将它放在config/目录下。

MIME类型映射

ownCloud允许管理员将文件扩展名映射到mimetype,例如,将以mp3结尾的文件映射到audio/mpeg,并显示特定的图标。

文件后缀名与MIME类型的映射关系储存在resources/config/mimetypemapping.dist.json。以下是这个文件内容的一个示例:

{
 "3gp": ["video/3gpp"],
 "7z": ["application/x-7z-compressed"],
 "accdb": ["application/msaccess"],
 "ai": ["application/illustrator"],
 "apk": ["application/vnd.android.package-archive"],
 "arw": ["image/x-dcraw"],
 "avi": ["video/x-msvideo"],
 "bash": ["text/x-shellscript"],
 "json": ["application/json", "text/plain"],
  ⇑后缀名    ⇑MIME类型(支持一种后缀对应多种MIME类型)
}

例如"json": ["application/json", "text/plain"],,表明对于后缀名为json的文件,其MIME类型都将定为application/jsontext/plain

建立独立的mimetypemapping.json

同样的,为了防止ownCloud/Nextcloud的更新将修改后的文件覆盖掉,我们可以在/config目录下建立mimetypemapping.json:

resources/config/mimetypemapping.dist.json拷贝为mimetypemapping.json,并将它放在config/目录下。

时间: 2024-10-31 17:18:21

ownCloud/Nextcloud MIME类型管理的相关文章

IIS中的 MIME类型

iis|mime 介绍 MIME (Multipurpose Internet Mail Extensions,多目的Internet邮件扩展)是创建用于电子邮件交换,网络文档,及企业网和Internet上的其他应用程序中的文件格式的规范.每个MIME格式包含一个MIME内容类型("MIME type")和指示存储在这个文件中的数据的子类型.MIME类型和子类型一般以类型/子类型的形式列出.例如,一个MPEG视频文件将会以"video/mpeg"的形式列出.MIME

网站上flv/MP4等格式的视频文件播放不出来和MIME类型有关系

在做一个网站时,发现视频文件,比如flv,MP4格式在本地可以正常的播放,但是传到了开发机器上,就不行了.播放器的文件地址是对的,就是一直没有反应. 经过长时间的实验,发现问题在与iis的设置问题.iis默认不让播放视频文件,解决办法如下: 打开服务器上的IIS管理器,在服务器下[网站]下找到对应的网站,右击点属性, (也可直接右击[默认网站]点属性) 打开属性设置窗口后点击HTTP头选项卡,点击其下[MIME类型]按钮, 新建一个MIME类型,扩展名为: .flv MIME类型: flv-ap

IIS自定义MIME类型的步骤_win服务器

单击[开始]→[程序]→[管理工具]→[IIS管理器],逐步展开"本地计算机"."网站",在你的网站上右击,选择[属性],单击"HTTP头"选项卡→单击"MIME类型"按钮,再单击"新建"按钮,在"扩展名"框内输入".flv","MIME类型"框中输入"flv-application/octet-stream",然后确定即可.&

ios-Google硬盘列出多个mime类型文件

问题描述 Google硬盘列出多个mime类型文件 要从谷歌硬盘中类出 mp3,mp4,mkv,avi,aac,wmv 文件.目前我只能列出mp3文件. 我的代码 怎么使用query.q = @"mimeType ='audio/mpeg' 查询多个扩展? -(void)loadDriveFiles { GTLQueryDrive *query = [GTLQueryDrive queryForFilesList]; query.q = @"mimeType ='audio/mpeg'

iis 7如何添加mime类型支持所有后缀名文件

  1,打开iis7,选择你要设置网站,打开mime类型选项 2,找到.rar的mime类型,复制他的类型 3,复制后选项添加,在文件扩展名那一栏填入.*,然后在下面的mime类型复制你刚复制的application/octet-stream,然后点击确定 这样就搞定了,嘿嘿,其实懂电脑的都知道.*的意思就是支持所有扩展名的文件,只要添加了这个类型,那么apk,ipa,3gp等扩展名就都支持了,怎么样,简单吧.

服务器-mime类型,传输图片时content-type里怎么写

问题描述 mime类型,传输图片时content-type里怎么写 自己用java编写的服务器端程序 传输html文件content-type这样写: out.println(""Content-Type: text/html; charset=GB2312""); 百度说传输jpg格式这样写: out.println(""Content-Type: image/jpeg; charset=GB2312""); 可是我试了为什

小技巧:IIS中的MIME类型

iis|mime|技巧 MIME(Multipurpose Internet Mail Extensions,多目的Internet邮件扩展)是创建用于电子邮件交换,网络文档,及企业网和Internet上的其他应用程序中的文件格式的规范. 每个MIME格式包含一个MIME内容类型和指示存储在这个文件中的数据的子类型.每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio.图象image等,后面定义具体的种类.MIME类型和子类型一般以类型/子类型的形式列出,比如网页的类型"text

php准确获取文件MIME类型的方法

 本文实例讲述了php准确获取文件MIME类型的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

IE9 CSS因Mime类型不匹配而被忽略问题相关解答

写页面的时候在chrome,fireforks等页面上显示正常,但是换成IE9之后就完全没有样式了.IE真是个奇葩的怪胎.它的报错信息是'CSS 因 Mime 类型不匹配而被忽略',也就是说所有的.css文件全部都不起效果了.去网上查了一些资料,有很多与这个问题相关的回答. 首 先要明白Mine类型是个什么.MIME类型就是设定某种指定扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使 用指定应用程序来打开,多用于指定一些客户端自定义的文件名,以及一些媒体文件