欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

php drupal 7 drupal7 d7 得到文件的filemime 内容类型 AG chatgpt 有大用 有大大用

在 PHP 中获取文件的 MIME 类型

在 Drupal 7 中获取文件的 MIME 类型有几种方法:

方法1:使用 file_get_mimetype() 函数 (Drupal 专用)

php
// 获取文件的 MIME 类型 $file_path = 'public://example.jpg'; $mime = file_get_mimetype($file_path); // 或者 $file = (object) array('filemime' => 'image/jpeg'); // 假设的文件对象 $mime = file_get_mimetype($file->filemime ? $file : $file_path);

方法2:使用 PHP 内置的 mime_content_type() 函数

php
$file_path = 'sites/default/files/example.jpg'; $mime = mime_content_type($file_path);

注意:mime_content_type() 需要 PHP 文件信息扩展(php_fileinfo)已启用

方法3:使用 finfo 类 (推荐,最准确)

php
$file_path = 'sites/default/files/example.jpg'; $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo);

方法4:从 Drupal 文件对象获取

如果已有文件对象:

php
$file = file_load($fid); // 加载文件对象 $mime = $file->filemime; // 直接获取 MIME 类型

方法5:使用 file_default_mimetype_mapping()

获取 Drupal 默认的 MIME 类型映射:

php
$mapping = file_default_mimetype_mapping(); // $mapping['extensions'] 和 $mapping['mimetypes'] 包含映射关系

注意事项

  1. 对于新上传的文件,Drupal 会自动检测并存储 MIME 类型到 file_managed 表的 filemime 字段

  2. 方法3 (finfo) 通常最准确,因为它实际读取文件内容而非依赖扩展名

  3. 在生产环境中应先检查文件是否存在,避免错误


普通分类: