web-dev-qa-db-ja.com

ファイルのMIMEタイプ(Content-Type)を見つけるにはどうすればよいですか?

Linux bashスクリプト内のファイルのMIMEタイプ(または「Content-Type」と呼ばれますか)を見つける方法はありますか?

私がそれを必要とする理由は、何らかの理由で.pngファイルをapplication/octet-streamファイルとして検出するため、ImageShackがファイルをアップロードするためにそれを必要とするためです。

ファイルを確認しましたが、実際にはPNG画像です。

$ cat /1.png 
?PNG
(with a heap load of random characters)

これは私にエラーを与えます:

$ curl -F "fileupload=@/1.png" http://www.imageshack.us/upload_api.php
<links>
<error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error>
</links>

これは機能しますが、MIME-TYPEを指定する必要があります。

$ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php
91
Mint

fileを使用します。例:

> file --mime-type image.png
image.png: image/png

> file -b --mime-type image.png
image/png

> file -i FILE_NAME
image.png: image/png; charset=binary
187
bhups

使用できる他のツール(ファイル以外)の1つはxdg-mime

xdg-mime query filetype <file>

ヤムがあるなら

yum install xdg-utils.noarch

Xdg-mimeとSubrip(subtitles)ファイル上のファイルの比較例

$ xdg-mime query filetype subtitles.srt
application/x-subrip

$ file --mime-type subtitles.srt
subtitles.srt: text/plain

上記のファイルでは、プレーンテキストとしてのみ表示されます。

21
ghostdog74

ファイルバージョン<5: file -i -b/path/to/file
ファイルバージョン> = 5: file --mime-type -b/path/to/file

9
Andrey

-iオプションを指定して file コマンドを試してください。

-iオプションfileコマンドにより、より伝統的な人間が読める形式ではなく、MIMEタイプの文字列を出力します。したがって、text/plain; charset=us-asciiではなくASCII textと表示される場合があります。

2
codaddict

file --mimeは機能しますが、-mime-typeは機能しません。少なくとも私のRHEL 5では。

1
fanchyna