alembic/mime

仅是npm的mime包的一个端口

v1.0.4 2016-04-22 18:35 UTC

This package is not auto-updated.

Last update: 2024-09-26 00:09:27 UTC


README

SensioLabsInsight Packagist (Composer) MIT License

综合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。