MIME 文件类型识别与上传校验

正常 NEW

本地文件类型识别与上传安全校验工具: 通过 base64 / hex / text 文件头做 magic bytes 匹配, 并对 ZIP/OOXML、OLE、PE、ISO BMFF、TAR、ISO 9660 做结构化解析。支持风险标记、扩展名一致性检查、期望类型列表/通配符与上传策略。纯本地算法, 无数据库、Redis 或外部 HTTP 依赖。

协议:HTTP 格式:JSON 版本:v1.0.0日调用量:1268次
¥ 0.002 / 次
按次计费

健康检查

健康检查

调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
GET http://www.shujuyu.cn/v1/api/mime/ping JSON

请求参数

参数名类型必填说明
key string 是 您的API密钥,可在个人中心获取

返回参数说明

参数名类型说明
code int 业务状态码,0 表示成功
msg string 提示信息,健康检查为 pong
data object 响应数据对象
data.name string 服务名称
data.version string 接口版本号
data.time string 服务器当前时间,格式 Y-m-d H:i:s
data.timezone string 服务器时区
data.endpoints array 本服务接口清单
data.encodings array 支持的输入编码(base64 / hex / text / auto)
data.profiles array 支持的上传策略(image / document / safe)
data.signature_count int 内置签名规则条数
data.categories array 支持的分类清单
data.limits object 输入长度、解码字节数、批量条数等上限

请求示例

返回示例

{"msg":"pong","code":0,"data":{"name":"MIME 文件类型识别 API","time":"2026-11-02 10:07:00","limits":{"head_size":32774,"max_batch":20,"max_input_length":65536,"max_decoded_length":65536,"max_lookup_results":100},"version":"1.0.0","profiles":["image","document","safe"],"timezone":"Asia/Shanghai","encodings":["base64","hex","text","auto"],"endpoints":["ping","signatures","detect","validate","lookup","batch"],"categories":["archive","audio","data","document","executable","font","image","model","text","video"],"signature_count":79}}

支持的签名列表

支持的签名列表

调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
GET http://www.shujuyu.cn/v1/api/mime/signatures JSON

请求参数

参数名类型必填说明
key string 是 您的API密钥,可在个人中心获取

返回参数说明

参数名类型说明
code int 业务状态码,0 表示成功
msg string 提示信息,成功为 success
data object 响应数据对象
data.count int 签名规则条数
data.categories array 签名涉及的分类清单
data.signatures array 签名详情数组,含 id、mime、扩展名、分类、说明、置信度与 magic 规则

请求示例

返回示例

{"msg":"success","code":0,"data":{"count":79,"categories":["archive","audio","data","document","executable","font","image","model","text","video"],"signatures":[{"id":"zip_docx","mime":"application/vnd.openxmlformats-officedocument.wordprocessingml.document","magic":["hex:504B0304@0","contains:word/"],"category":"document","confidence":"high","extensions":["docx"],"description":"Microsoft Word (OOXML)"},{"id":"image_png","mime":"image/png","magic":["hex:89504E470D0A1A0A@0"],"category":"image","confidence":"high","extensions":["png"],"description":"PNG image"}]}}

识别文件类型

以下格式不再依赖简单前缀, 而是解析文件结构

调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST http://www.shujuyu.cn/v1/api/mime/detect JSON

请求参数

参数名类型必填说明
key string 是 您的API密钥,可在个人中心获取
data string 是 base64 / hex / text 数据
encoding string 否 base64 / hex / text / auto
filename string 否 可选文件名; 传入后返回扩展名一致性分析

返回参数说明

参数名类型说明
code int 业务状态码,0 表示成功
msg string 提示信息,成功为 success
data object 响应数据对象
data.detected bool 是否识别到已知类型
data.mime string 识别出的 MIME 类型;未识别为 application/octet-stream
data.extensions array 推荐的扩展名数组
data.category string 类型分类,如 image / document / archive
data.description string 格式说明
data.confidence string 置信度等级:high / medium / low
data.confidence_score int 置信度数值:90 / 60 / 30
data.signature_id string 命中的稳定签名标识,如 image_png
data.matched object 命中的结构化条件或签名规则
data.alternatives array 同时命中的其他类型,如 ZIP / OOXML
data.flags object 类型与风险标记对象
data.head_hex string 文件头前 32 字节的十六进制表示
data.head_ascii string 文件头前 32 字节的可打印字符表示
data.encoding_used string 实际使用的输入编码
data.bytes_decoded int 解码后的字节数

请求示例

返回示例

{"msg":"success","code":0,"data":{"mime":"image/png","flags":{"is_text":false,"is_binary":true,"is_script":false,"is_archive":false,"risk_level":"low","is_executable":false,"is_macro_enabled":false},"matched":{"conditions":[{"type":"hex","offset":0,"pattern":"89504E470D0A1A0A"}]},"category":"image","detected":true,"head_hex":"89504E470D0A1A0A000000000000000000000000000000000000000000000000","confidence":"high","extensions":["png"],"head_ascii":".PNG............................","description":"PNG image","alternatives":[],"signature_id":"image_png","bytes_decoded":108,"encoding_used":"base64","confidence_score":90}}

校验文件类型

识别数据, 并判断是否符合期望类型、上传策略和(可选)文件扩展名

调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST http://www.shujuyu.cn/v1/api/mime/validate JSON

请求参数

参数名类型必填说明
key string 是 您的API密钥,可在个人中心获取
data string 是 base64 / hex / text 数据
encoding string 否 base64 / hex / text / auto
expected string 是 期望类型, 支持 MIME、扩展名、列表和通配符
profile string 否 上传策略: image / document / safe
filename string 否 文件名; 用于扩展名一致性与双扩展名检查
strict bool 否 为真时, 文件名扩展名必须与识别结果一致

返回参数说明

参数名类型说明
code int 业务状态码,0 表示成功
msg string 提示信息,成功为 success
data object 响应数据对象
data.valid bool 综合校验结果,等于 expected_valid && extension_valid && profile_allowed !== false
data.expected string 原始期望类型字符串
data.expected_type string 期望写法类型:mime / extension / wildcard / list
data.expected_mimes array 解析出的期望 MIME 列表
data.expected_extensions array 解析出的期望扩展名列表
data.expected_wildcards array 解析出的通配符列表,如 image/*
data.expected_tokens array 期望值拆分后的原始片段列表
data.expected_valid bool 识别结果是否命中期望类型
data.profile string 本次使用的上传策略;未传为 null
data.profile_allowed string 上传策略是否允许;未传 profile 为 null
data.strict bool 是否启用严格扩展名模式
data.extension_valid bool 扩展名一致性结果;非严格模式恒为 true
data.filename string 文件名分析结果;未传 filename 为 null
data.detected bool 是否识别到已知类型
data.mime string 识别出的 MIME 类型
data.extensions array 推荐扩展名数组
data.alternatives array 同时命中的其他类型
data.matched_mime string 最终命中的 MIME
data.matched_by string 命中方式:mime / extension / wildcard
data.confidence string 置信度等级:high / medium / low
data.confidence_score int 置信度数值:90 / 60 / 30
data.signature_id string 命中的稳定签名标识
data.flags object 类型与风险标记对象
data.encoding_used string 实际使用的输入编码
data.bytes_decoded int 解码后的字节数
data.mismatch string 校验失败原因汇总,多项以分号连接;全部通过为 null

请求示例

返回示例

{"msg":"success","code":0,"data":{"mime":"image/png","flags":{"is_text":false,"is_binary":true,"is_script":false,"is_archive":false,"risk_level":"low","is_executable":false,"is_macro_enabled":false},"valid":true,"strict":false,"profile":null,"detected":true,"expected":"image/png","filename":null,"mismatch":null,"confidence":"high","extensions":["png"],"matched_by":"mime","alternatives":[],"matched_mime":"image/png","signature_id":"image_png","bytes_decoded":16,"encoding_used":"base64","expected_type":"mime","expected_mimes":["image/png"],"expected_valid":true,"expected_tokens":["image/png"],"extension_valid":true,"profile_allowed":null,"confidence_score":90,"expected_wildcards":[],"expected_extensions":["png"]}}

查询签名

按 MIME、扩展名或关键词查询支持的签名

调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST http://www.shujuyu.cn/v1/api/mime/lookup JSON

请求参数

参数名类型必填说明
key string 是 您的API密钥,可在个人中心获取
mime string 否 MIME 类型 (支持别名)
ext string 否 扩展名, 可带前导点
q string 否 关键词, 匹配 MIME/扩展名/描述/分类

返回参数说明

参数名类型说明
code int 业务状态码,0 表示成功
msg string 提示信息,成功为 success
data object 响应数据对象
data.mime string 本次查询使用的 MIME 条件
data.ext string 本次查询使用的扩展名条件
data.q string 本次查询使用的关键词条件
data.count int 命中的签名规则数量
data.list array 命中的签名详情数组

请求示例

返回示例

{"msg":"success","code":0,"data":{"q":null,"ext":null,"list":[{"id":"image_png","mime":"image/png","magic":["hex:89504E470D0A1A0A@0"],"category":"image","confidence":"high","extensions":["png"],"description":"PNG image"}],"mime":"image/png","count":1}}

批量识别

一次识别最多 20 项, 单条失败不影响其他项

调用方式:在接口地址后拼接 ?key=您的API密钥 即可直接调用;也可改用 Authorization: Bearer 或 X-App-Key 请求头传递,避免密钥出现在访问日志中。
POST http://www.shujuyu.cn/v1/api/mime/batch JSON

请求参数

参数名类型必填说明
key string 是 您的API密钥,可在个人中心获取
items array 是 1-20 项; 字符串项按默认编码, 对象项支持独立 data/encoding/filename
encoding string 否 默认编码, 可被单项覆盖

返回参数说明

参数名类型说明
code int 业务状态码,0 表示成功
msg string 提示信息,成功为 success
data object 响应数据对象
data.total int 提交的识别项总数
data.returned int 实际返回的项数
data.valid int 成功解码并识别的项数
data.detected int 识别到已知类型的项数
data.invalid_count int 识别失败的项数
data.max_limit int 单次批量识别上限
data.list array 逐项识别结果数组,含下标、是否成功及结果或错误信息

请求示例

返回示例

{"msg":"success","code":0,"data":{"list":[{"ok":true,"index":0,"result":{"mime":"image/png","flags":{"...":"...","is_binary":true,"risk_level":"low"},"filename":{"...":"...","extension":"png","extension_match":true}}},{"ok":true,"index":1,"result":{"...":"...","mime":"application/zip"}},{"ok":false,"error":{"msg":"data 不是合法的 base64 / hex 数据","code":4001},"index":2}],"total":3,"valid":2,"detected":2,"returned":3,"max_limit":20,"invalid_count":1}}

产品说明

产品概述

本地文件类型识别与上传安全校验工具: 通过 base64 / hex / text 文件头做 magic bytes 匹配, 并对 ZIP/OOXML、OLE、PE、ISO BMFF、TAR、ISO 9660 做结构化解析。支持风险标记、扩展名一致性检查、期望类型列表/通配符与上传策略。纯本地算法, 无数据库、Redis 或外部 HTTP 依赖。

使用场景

数据查询:快速集成 MIME 文件类型识别与上传校验 到您的应用中
业务系统:将 MIME 文件类型识别与上传校验 数据嵌入业务流程
开发工具:通过 API 接口获取 开发工具 数据
数据分析:基于 MIME 文件类型识别与上传校验 数据进行分析和决策

费用计算

按次计费单价
¥0.002 / 次
每次调用接口从账户余额中扣除相应费用,VIP 用户可享折扣

扣费优先级

免费额度
次数包
余额扣费

计费方式详解

1 免费额度
· 接口每日免费额度已关闭
· VIP 用户月度免费额度:
· 个人版:每月 5000 次,本接口月上限 5000 次
· 专业版:每月 30000 次,本接口月上限 30000 次
· 企业版:每月 200000 次,本接口月上限 200000 次
· 账户如有注册/活动赠送的免费次数,会优先于接口免费额度扣减
· VIP 月度免费额度仅适用于单次售价不高于 ¥0.0800/次 的接口;接口每日免费额度按接口配置执行
VIP 月度免费额度每月重置,未使用部分不累计至下月。
2 次数包
预付费购买固定调用次数,折算单价与按次付费相同,用完为止。
次数包为独立计费,不与 VIP 折扣叠加。
请在有效期内使用,过期后未使用的次数不可再用。
3 余额扣费
按次从账户余额扣除费用;所有用户可享量折扣,VIP 用户额外享 VIP 折扣。
扣费公式:实际扣费 = 接口单价 × (1 - VIP 折扣比例 - 量折扣比例),并受总折扣上限和最低利润率保护约束
VIP 折扣: 个人版9折 专业版8折 企业版7折
量折扣: 月付费调用 ≥1000 次享 2%、 月付费调用 ≥10000 次享 5%、 月付费调用 ≥20000 次享 10%
· 量折扣按账号当月全部接口的付费调用次数统计,达到更高档位时按更高档位计算
总折扣上限:VIP 折扣 + 量折扣合计不超过 50%
最低利润率保护:折后价不得低于成本价 × (1 + 15%);若接口售价本身低于该保护价,则取消折扣并按售价计费
余额不足时调用将失败,请及时充值。

VIP 权益对比

等级每月免费次数本接口月免费上限折扣VIP 折后单价
免费版 按接口配置 — - ¥0.002/次
个人版 5000 次 5000 次 10% ¥0.0018/次
专业版 30000 次 30000 次 20% ¥0.0016/次
* VIP 月度免费额度每月重置。每月免费次数为账号级 VIP 月额度,本接口月免费上限为其中对本接口的限制(接口可单独设置上限或关闭)。VIP 折扣仅适用于余额扣费方式,VIP 折后单价不含量折扣。 本接口已关闭接口级月度免费额度(不影响 VIP 月度免费额度)。接口每日免费额度已关闭。

费用计算示例

* 以下示例未包含量折扣,量折扣按账号当月全部接口的付费调用量另行计算。
示例1:普通用户按次付费
调用 1000 次,费用 = 0.002 × 1000 = ¥2.00
示例2:个人版用户按次付费(仅 VIP 折扣,已考虑最低利润率保护)
调用 1000 次,折扣约 10%,费用 = 0.002 × (1 - 10%) × 1000 ≈ ¥1.80

错误码说明

本接口未定义专属错误码,调用时请参考通用错误码体系。

查看通用错误码参考
错误码说明解决方案
200请求成功-
400000请求参数错误检查参数名、格式与取值
401000认证失败检查 Authorization: Bearer 密钥是否正确、是否过期
401002缺少 API 认证参数请求未携带 key,请通过 URL 参数 key 或请求头 Authorization 传递密钥
402000账户余额不足充值后重试
403000无访问权限确认密钥权限、接口范围与 IP 白名单是否满足要求
404001接口或端点不存在检查 API 与端点的请求路径
409000请求冲突请稍后重试
422000参数校验失败检查参数格式与取值
429001请求频率超限(QPS)降低请求频率,或升级套餐提升额度
429002分钟级调用频率超限降低调用频率,或升级套餐提升额度
429003小时级调用额度已用完升级套餐提升额度,或整点后重试
429004今日调用额度已用完升级套餐提升额度,或次日重试
500000服务器内部错误携带响应中的 request_id 联系技术支持
502000服务暂时不可用稍后重试
503000服务暂时不可用稍后重试
504000请求超时稍后重试

更新日志

暂无更新日志