如何使用Go语言mime标准库识别文件扩展名对应的MIME类型?

2026-04-30 20:110阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计923个文字,预计阅读时间需要4分钟。

如何使用Go语言mime标准库识别文件扩展名对应的MIME类型?

使用`mime.TypeByExtension`可以直接查询扩展名对应的MIME类型,但它只查扩展名,不读取文件内容。例如,`.jpg`返回`image/jpeg`,`.md`返回`text/x-markdown`(如果已注册)。

常见错误是传入带路径的字符串,比如 /home/user/report.pdf —— 它会返回空字符串,因为函数只认 .pdf 这种纯后缀。得先用 path.Basepath.Ext 提取扩展名:

ext := path.Ext(path.Base(filename)) // 安全提取 .pdf、.tar.gz 等 mimeType := mime.TypeByExtension(ext)

注意:.tar.gz 这类双扩展名,path.Ext 返回 .gz,不是 .tar.gz;Go 标准库默认不支持多级扩展名映射,需要手动处理或改用第三方库。

为什么 mime.TypeByExtension 对某些后缀返回空

因为 Go 的 MIME 映射表是静态内置的,只包含常见后缀(如 .js.css.png),很多现代格式没注册,比如 .webp.avif.toml.yaml 默认都查不到。

阅读全文

本文共计923个文字,预计阅读时间需要4分钟。

如何使用Go语言mime标准库识别文件扩展名对应的MIME类型?

使用`mime.TypeByExtension`可以直接查询扩展名对应的MIME类型,但它只查扩展名,不读取文件内容。例如,`.jpg`返回`image/jpeg`,`.md`返回`text/x-markdown`(如果已注册)。

常见错误是传入带路径的字符串,比如 /home/user/report.pdf —— 它会返回空字符串,因为函数只认 .pdf 这种纯后缀。得先用 path.Basepath.Ext 提取扩展名:

ext := path.Ext(path.Base(filename)) // 安全提取 .pdf、.tar.gz 等 mimeType := mime.TypeByExtension(ext)

注意:.tar.gz 这类双扩展名,path.Ext 返回 .gz,不是 .tar.gz;Go 标准库默认不支持多级扩展名映射,需要手动处理或改用第三方库。

为什么 mime.TypeByExtension 对某些后缀返回空

因为 Go 的 MIME 映射表是静态内置的,只包含常见后缀(如 .js.css.png),很多现代格式没注册,比如 .webp.avif.toml.yaml 默认都查不到。

阅读全文