[Django] 文件类型推断

2022-04-19  本文已影响0人  alue

任务:用户可以上传任意类型文件,后端自动识别文件类型。

这个业务需求来源于最近开发的知识图谱。图谱中,针对每个节点对象,用户都可以关联各种类型的附件。

但页面渲染时,需要根据附件类型,来选择合适的渲染方式。

可以在用户上传附件时,手动选择文件类型。但这样既费时,又需要做错误处理,非常不科学。

后端可以根据文件的后缀名来判断文件类型,例如.jpg/.png等结尾的,就划分为图片,.mp4/.flv结尾的就划分为视频等。这样能够应付大部分场景,除非用户搞坏,故意修改文件后缀。

但真要又这样的需求,该怎么处理呢?

这里推荐一个python工具包filetype,它通过检测“magic number”——一种文件特征,来快速判断文件类型。

例如所有pdf文件的开头都是16进制的25 50 44 46 , GIF文件开头的ASCII码是GIF89a或者GIF87a等。

通过这种特征检测,filetype能够快速推断出文件类型。

上一篇 下一篇

猜你喜欢

热点阅读