ファイル拡張子に関係なく、アップロードのMIMEタイプを検出したい場合があります。これは、多くの場合、ファイルヘッダーを読み取って、ファイルの本質を示す「マジックナンバー」またはその他のビットパターンを検出することによって行われます。多くの場合、テキストファイルはエッジケースであり、ヘッダーは検出されず、最初のxバイトは印刷可能なASCIIまたはUnicodeです。
それは少しうさぎの穴ですが、それを行うPythonライブラリがいくつかあります。例: https://github.com/ahupp/python-magic ファイルの内容ごとにmimeタイプを推測するだけで、ニーズに合わせて機能します。次に、ファイルの内容を、受け入れたいタイプと照合します。
ニーズに固有の関連するサンプルコードのセットは、次の場所にあります: https://stackoverflow.com / a / 28306825/7341881
編集:Eddieのソリューションは機能的に同等です。 python-magicは、Linuxのネイティブの「file」コマンドが利用するlibmagicをラップします。サブプロセスルートを使用する場合は、ユーザー入力(ユーザーが指定したファイル名など)を不適切にサニタイズしてセキュリティの脆弱性を作成しないように特に注意してください。これにより、サーバーのランタイム環境への任意のアクセスを許可する攻撃が発生する可能性があります。