任务:用户可以上传任意类型文件,后端自动识别文件类型。
这个业务需求来源于最近开发的知识图谱。图谱中,针对每个节点对象,用户都可以关联各种类型的附件。
但页面渲染时,需要根据附件类型,来选择合适的渲染方式。
可以在用户上传附件时,手动选择文件类型。但这样既费时,又需要做错误处理,非常不科学。
后端可以根据文件的后缀名来判断文件类型,例如.jpg
/.png
等结尾的,就划分为图片,.mp4
/.flv
结尾的就划分为视频等。这样能够应付大部分场景,除非用户搞坏,故意修改文件后缀。
但真要又这样的需求,该怎么处理呢?
这里推荐一个python工具包filetype
,它通过检测“magic number”——一种文件特征,来快速判断文件类型。
例如所有pdf文件的开头都是16进制的25 50 44 46
, GIF文件开头的ASCII码是GIF89a
或者GIF87a
等。
通过这种特征检测,filetype
能够快速推断出文件类型。
网友评论