alembic / mime
仅是npm的mime包的一个端口
This package is not auto-updated.
Last update: 2024-09-26 00:09:27 UTC
README
综合MIME类型映射API,PHP版本的broofa/node-mime。MIME数据库来自jshttp/mime-db。
数据源
此库使用mime-db存储库。更新会自动从它们的存储库中拉取,使用bin/pull-mime-db.php [out] [--with-apache]
。
默认情况下,此库公开了合并后的nginx + mime-db "自定义类型"(119个可用的mimes)和扩展。这些是互联网上最常见的类型。库还包括Apache类型。大多数Apache类型基本上是无用的,而且数量非常多(884个可用的mimes),因此为了减少内存占用,默认不加载Apache类型。
如果您正在寻找具有更多选项和功能的库,请查看hoaproject/Mime。如果您需要简单的东西,这个库就是为您准备的!例如,此库非常适合实现基于扩展名的MIME类型来服务静态文件的HTTP服务器 - 因为MIME扫描太慢了。
安装与使用
composer require alembic/mime
use Alembic\Mime\Mime;
注意:以下所有方法都可以通过静态方法或Mime
类的实例调用(在DI环境中更实用)。请注意,即使使用实例调用,MIME数据库也是共享的,因为它是静态的。
API - 查询
Mime::lookup($path [, $fallback])
获取与文件关联的MIME类型,如果未找到MIME类型,则返回$fallback
(默认为Mime::$defaultType
,即application/octet-stream
)。使用$path
中的扩展名(最后'.'之后的部分)执行不区分大小写的查找。例如:
use Alembic\Mime\Mime; Mime::lookup('/path/to/file.txt'); # => 'text/plain' Mime::lookup('file.txt'); # => 'text/plain' Mime::lookup('.TXT'); # => 'text/plain' Mime::lookup('htm'); # => 'text/html' Mime::lookup('unknown'); # => 'application/octet-stream' Mime::lookup('unknown', null); # => null # Instance mode: (new Mime)->lookup('folder/file'); # => 'application/octet-stream'
Mime::$defaultType
Mime::lookup
在找不到搜索的扩展名时返回的MIME类型(默认为标准的application/octet-stream
)。
Mime::extension($type)
获取$type
的首选扩展名。
Mime::extension('text/html'); # => 'html' Mime::extension('application/octet-stream'); # => 'bin'
Mime::$defaultExtension
当Mime::extension
无法找到搜索的类型时返回的扩展名(警告,默认为null
)。
API - 定义类型
可以通过以下API在项目级别添加自定义类型映射。
Mime::define()
添加自定义MIME/扩展映射。
Mime::define([ 'text/x-some-format' => ['x-sf', 'x-sft', 'x-sfml'], 'application/x-my-type' => ['x-mt', 'x-mtt'], 'application/x-my-format' => 'x-mf', # string allowed for unique ext # etc ... ]); Mime::lookup('x-sft'); # => 'text/x-some-format'
如前所述,扩展数组中的第一个条目由Mime::extension()
返回。例如:
Mime::extension('text/x-some-format'); # => 'x-sf'
Mime::load($filepath)
从Apache ".types"文件或包含一个types
块的Nginx文件加载映射。格式(Nginx或Apache)根据内容自动检测。由于库使用file_get_contents()
,因此$filepath
参数可以是文件系统路径、FTP路径、URL等。如果文件无法加载(路径错误或权限不足),则抛出\RuntimeException
。
Mime::load('./my_project.types');
Apache .types文件或Nginx types
块格式很简单 - 请参阅examples目录中的示例。
Mime::apacheExtend()
加载合并后的mime-db+nginx+Apache MIME类型和扩展的打包数据库。基本数据库(mime-db+nginx)默认加载,大小为8 KiB;而此方法加载的全数据库大小为70 KiB。