MIMEタイプ --stdinは常にtext/plainを返します

MIMEタイプ --stdinは常にtext/plainを返します

ファイル拡張子/inode データを利用せずに正しい MIME タイプ情報を取得するのに苦労しています。magic を使用すると、ファイルが何であるかに関係なく、常に text/plain が返されます。

背景情報については、こちらをご覧ください。

Linux MIME タイプが glob やその他のメソッドを使用できるようにすると、正常に動作します。

mimetype mountain.jpg

山.jpg: 画像/jpeg

このファイルが画像であることを本当に確認したいので、マジックチェックで動作させようとすると、テキストファイルであると表示されます。

mimetype -M mountain.jpg

山.jpg: 画像/jpeg

テキストファイルではないことを確認するために、ファイルコマンドを使用します。

file -i mountain.jpg

mountain.jpg: image/jpeg; charset=binary

次のいずれかを試すと、text/plain のみを取得できるようになります。

cat mountain_dew-400-400.jpg | mimetype -M --stdin

STDIN: テキスト/プレーン

tee mountain_dew-400-400.jpg | mimetype -M --stdin

STDIN: テキスト/プレーン

mimetype --stdin - < mountain_dew-400-400.jpg

STDIN: テキスト/プレーン

私はすでに以下のコマンドを実行しました

cpan install IO::Scalar
cpan install File::MimeInfo
cpan install File::MimeInfo::Magic

答え1

mimetype --stdinまったく機能していないようです。私は提出しましたDebian バグ #784545

回避策として、file -i -の代わりにを使用できますmimetype --stdin

関連情報