You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何获取无格式信息文件名的媒体类型与格式?

如何获取无格式信息文件名对应的标准MIME类型(如image/png)

下面是几个可靠的替代方案,避开你遇到的mediainfo缺库、ffprobe不支持图片的问题:

1. 使用原生file命令(Linux/macOS/Windows兼容)

这是最便捷的跨平台方案,依赖文件的**魔术数(文件头特征)**检测MIME类型,无需额外安装依赖(Linux/macOS默认自带,Windows可通过Git Bash、WSL或单独安装GNU File工具使用)。

执行命令:

file --mime-type <目标文件名>

示例输出:

your_file: image/png

直接提取冒号后的内容就是你需要的标准MIME格式。

2. 用Python脚本批量/程序化检测

如果需要集成到代码中,推荐使用python-magic库(基于libmagic,和file命令底层逻辑一致):

  1. 先安装依赖:
pip install python-magic
# Windows用户可能需要额外安装libmagic二进制包,可通过conda或手动下载对应版本
  1. 检测脚本示例:
import magic

def get_file_mime_type(file_path):
    # 初始化magic对象,指定只返回MIME类型
    mime_detector = magic.Magic(mime=True)
    return mime_detector.from_file(file_path)

# 调用示例
print(get_file_mime_type("your_target_file"))

执行后会直接返回image/png这类标准格式。

3. Windows PowerShell原生方案

如果是纯Windows环境,可通过读取文件头并匹配已知图片格式的魔术数来实现,示例脚本:

function Get-ImageMimeType {
    param([string]$FilePath)
    $fileStream = [System.IO.File]::OpenRead($FilePath)
    $bytes = New-Object byte[] 8
    $fileStream.Read($bytes, 0, 8) | Out-Null
    $fileStream.Close()

    # 匹配常见图片格式的魔术数
    switch -Wildcard ($bytes) {
        "89 50 4E 47*" { return "image/png" }
        "FF D8 FF*" { return "image/jpeg" }
        "47 49 46 38*" { return "image/gif" }
        "52 49 46 46*" { return "image/webp" }
        default { return "unknown/image" }
    }
}

# 调用示例
Get-ImageMimeType -FilePath "C:\path\to\your_file"

这个脚本无需额外安装工具,直接通过PowerShell执行,适合Windows专属场景。

内容的提问来源于stack exchange,提问作者Ur Niiicb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:22:47