欢迎各位兄弟 发布技术文章
这里的技术是共享的
在 Drupal 7 中获取文件的 MIME 类型有几种方法:
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);
php$file_path = 'sites/default/files/example.jpg'; $mime = mime_content_type($file_path);
注意:mime_content_type()
需要 PHP 文件信息扩展(php_fileinfo)已启用
php$file_path = 'sites/default/files/example.jpg'; $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $file_path); finfo_close($finfo);
如果已有文件对象:
php$file = file_load($fid); // 加载文件对象 $mime = $file->filemime; // 直接获取 MIME 类型
获取 Drupal 默认的 MIME 类型映射:
php$mapping = file_default_mimetype_mapping(); // $mapping['extensions'] 和 $mapping['mimetypes'] 包含映射关系
对于新上传的文件,Drupal 会自动检测并存储 MIME 类型到 file_managed
表的 filemime
字段
方法3 (finfo) 通常最准确,因为它实际读取文件内容而非依赖扩展名
在生产环境中应先检查文件是否存在,避免错误